簡體   English   中英

如何在JS和JSON之間轉義雙引號

[英]How to escape double quotes between JS and JSON

我正在嘗試在JS中構造一個String,該String可以以一種非常特殊的格式傳遞給JSON。 所需的結果是以下形式的字符串:

[“ PNG”,“ 350x150”,“ 127 KB”]

其中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變量上)打印:

[“ PNG”,“ 350x150”,“ 127 KB”]

到現在為止還挺好。 但是,當我們將其傳遞給iVO構造並字符串化生成的JSON的那iVO ,它會生成以下輸出(在我對它進行漂亮的打印格式之后):

{
    "images":
    {
        "4490i45"":
        {
            "fizz":"buzz",
            "imgDesc":"[\"PNG\",\"350x150\",\"127 KB\"]",
            "foo":"bar"
        }
    }
}

我所有的雙引號(“)已轉義(\\”)! 另外, imgDesc的值用雙引號引起來,這不是我們想要的(請參見下面的所需JSON):

當我將此JSON發送回服務器時,它導致服務器阻塞。

不知道這里發生了什么,但是我嘗試了其他一些建議,包括用'\\x22'實例替換雙引號。

關於如何解決此問題以從JSON.stringify(iVO)獲得所需結果的任何想法? 最終,這是唯一重要的事情,我們最終將以下內容發送到服務器:

{
    "images":
    {
        "4490i45"":
        {
            "fizz":"buzz",
            "imgDesc":["PNG","350x150","127 KB"],
            "foo":"bar"
        }
    }
}

沒有轉義的雙引號,並且imgDesc的值沒有雙引號。 提前致謝!

你為什么不把imgDescription設置為常規數組

var imgDescription = [imgType , imgDim, imgSize];

Stringify應該照顧好您要執行的操作,否則,您將imgDescription傳遞為字符串,並且stringify會轉義引號。

例如

var imgType = "PNG";
var imgDim = "350x150";
var imgSize = "127 KB";
var d = {
    "fizz":"buzz",
    "imgDesc":[imgType , imgDim, imgSize],
    "foo":"bar"
}
console.log(JSON.stringify(d));

輸出:

{"fizz":"buzz","imgDesc":["PNG","350x150","127 KB"],"foo":"bar"}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM