JSONに非常に特殊な形式で渡すことができるJSで文字列を作成しようとしています。所望の結果は、次の形式の文字列である:[「127キロバイト」、「350x150」「PNG」]JSとJSONの二重引用符をエスケープする方法
PNG
が350x150
が画像のある特定の画像の種類に対応
サイズは127 KB
です。
var imgType = getImageType(); // Returns "PNG"
var imgDim = getImageDim(); // Returns "350x150"
var imgSize = getImageSize(); // Returns "127 KB"
var imgDescription = '["' + imgType + '","' + imgDim + '","' + imgSize + '"]';
// Sanity check
alert(imgDescription);
iVO.images[thisImage] = {
"fizz":"buzz",
"imgDesc":imgDescription,
"foo":"bar"
}
alert(JSON.stringify(iVO));
最初の警告(imgDescription
変数に)プリント:これらthreee値の各々は、文字列変数である
[ "PNG"、 "350x150"、 "127キロバイト"]
これまでのところ、とても良いです。
{
"images":
{
"4490i45"":
{
"fizz":"buzz",
"imgDesc":"[\"PNG\",\"350x150\",\"127 KB\"]",
"foo":"bar"
}
}
}
逃れてきた私の二重引用符( ")の全て(ただし、我々はiVO
構造にそれを渡し、その結果JSONを文字列化分、それは(Iかわいいプリントフォーマットした後に)次の出力を生成し、 \ ")!!!また、imgDesc
の値は二重引用符で囲まれています(希望するJSONは下記参照)。
私はこのJSONをサーバーに送り返すと、サーバーがチョークする原因となります。
ここで何が起こっているのかわかりませんが、二重引用符を'\x22'
インスタンスに置き換えるなど、いくつかの他の提案を試してみましたが、これは役に立たなかったものです。
JSON.stringify(iVO)
から希望の結果を得るためにこれを修正する方法はありますか?
{
"images":
{
"4490i45"":
{
"fizz":"buzz",
"imgDesc":["PNG","350x150","127 KB"],
"foo":"bar"
}
}
}
はなし二重引用符をエスケープし、imgDesc
の値は二重引用符で囲まれていない。最終的にはそれが唯一の問題は、我々は、サーバーに次の送信を終わることを、ません。前もって感謝します!
あなたは余分なエスケープ引用符を追加しようとしたことがありますか? – dweiss
いい加減な提案のような音@dweiss - あなたはコード例を提供することができますか?再度、感謝します! – IAmYourFaja
ターゲットが有効なJSON( "imgDesc":["PNG"、 "350x150"、 "127 KB"]など)ではありません。 – Will