как добавить строку со специальным символом в качестве ключа json?

Я хочу добавить строку со специальным символом в JSON в качестве KEY. Например, "Sam@123"
Вот код, который я пытаюсь использовать.

<script type="text/javascript">

var jsonObj={"sam":1,"rudolph":1,"js":1," ":12};
var key="samw@123";
alert("Add it.")
// Adding the key with Special Character in JSON
eval("jsonObj."+key+"=11")
alert("Added successfully.")

for(var i=0; i< Object.keys(jsonObj).length; i++){
alert("KEY#"+Object.keys(jsonObj)[i]);
}

</script>

Я получаю следующую ошибку в строке 6 "eval......".

Uncaught SyntaxError: неожиданный токен ILLEGAL

Есть ли другой способ добавить специальный символ в Json как KEY?

я тоже не могу добавить

var key="samw-123";

для этого я получаю сообщение об ошибке

Uncaught ReferenceError: Недопустимая левая часть в назначении


person Ashish Agarwal    schedule 23.10.2011    source источник
comment
вам не нужно использовать eval для этого, см. ответ мастера ниже   -  person wong2    schedule 23.10.2011
comment
(a) Здесь вы не работаете с JSON, только с объектами JavaScript. (b) возможный дубликат имя свойства динамического объекта   -  person Felix Kling    schedule 23.10.2011


Ответы (1)


Вместо этого должно работать нормально, используя такой синтаксис:

eval("jsonObj['" + key + "'] = 11");

На самом деле eval даже не требуется:

jsonObj[key] = 11;
person Shadow Wizard Wearing Mask V2    schedule 23.10.2011
comment
Не только это, но и использование eval — это плохо. Это открывает перед вами всевозможные проблемы с безопасностью (для начала, что произойдет, если ключ содержит символ кавычки?). - person gsnedders; 23.10.2011