2017-04-18 66 views
0

我有名字的列表和正在使用它們作爲鍵JSON對象,但是,有時,關鍵可能包含雙引號在其中,就像這樣:帶引號的JSON對象鍵 - 如何?

var parts = { 
    Expando Sleeve 1/4": [ 
    { 
     id:"45", name:"TEST REPORT", partID:"4" 
    }, 
    { 
     id:"15", name:"01-077512", partID:"4" 
    }] 
}; 

所以,這個問題我面對這裏是我的名字爲Expando Sleeve 1/4",這是我需要它,但我有它存儲在頁面中隱藏的輸入元素像這樣:<input type="hidden" value="Expando Sleeve 1/4"" name="partName" />

所以我做一個ajax調用,比使用的值隱藏的輸入元素...像這樣將響應值添加到全局parts數組...

var $val = $('input[name="partName"]').val(); 

if (!parts.hasOwnProperty($val)) 
    parts[$val] = []; 

parts[$val].push(response[$val]); 

這裏的問題是,它增加了鑰匙插進JSON對象parts像這樣:

parts[Expando Sleeve 1/4\"]代替部分[Expando Sleeve 1/4"]。所以我在如何避免在這裏使用雙引號而苦苦掙扎,並且擁有這樣的密鑰:Expando Sleeve 1/4"

我該如何做到這一點?

回答

1

在JSON中使用雙引號HTML字符&quot;

var parts = { 
    "Expando Sleeve 1/4&quot;": [ 
    { 
     id:"45", name:"TEST REPORT", partID:"4" 
    }, 
    { 
     id:"15", name:"01-077512", partID:"4" 
    }]; 
}; 
+0

JSON的關鍵必須在雙引號匹配輸入到輸入文本字段中的數據,以便獲取對象數組欣他們。所以人們不會在'"'輸入文本字段,他們會輸入'「' –

+0

,'''將會變成'"'。它正在序列化字符。無論如何,當你使用JSON時,它會在幕後進行。 –

+0

要測試這一點,請使用JsonConvert序列化一個字符串,並在查看結果時將其轉換爲HTML字符。 –

0

可以使用字符文字引號('),以JSON鍵保存爲一個字符串

var parts = { 
    'Expando Sleeve 1/4"': [ 
    { 
     id:"45", name:"TEST REPORT", partID:"4" 
    }, 
    { 
     id:"15", name:"01-077512", partID:"4" 
    }] 
}; 
1

在Chrome控制檯所有它的確定:

var obj = {};  
var val = "Expando Sleeve 1/4\""; 
obj[val]="x";  
console.log(obj) 
//console >> Object {Expando Sleeve 1/4": "x"} 

另一種選擇:

var parts = { 
    "Expando Sleeve 1/4\"": [ 
    { 
     id:"45", name:"TEST REPORT", partID:"4" 
    }, 
    { 
     id:"15", name:"01-077512", partID:"4" 
    }] 
};  
console.log(parts) 
//console >> 
//Object Expando Sleeve 1/4": Array(2) 
//__proto__ : Object 

看起來像jquery問題

UPD: 它的HTML安全 「問題」,工作的解決方案:

$('<input value="escape&quot"/>').val() 
0

更換您從價值

<input type="text" name="name" value="&quot;YOUR_VALUE">