var jsn=getAttr(ref,"json-data").toString();
console.log(jsn); //{test: true,stringtest:"hallo"}. it's OK.
JSON.parse(jsn); //Uncaught SyntaxError: Unexpected token s, line: line with JSON.parse;
我认为JSON.parse
对这些数据做了些不对的事情。我试图删除stringtest:"hallo"
- 没有结果...... PS:我认为我做错了然后我问了这个问题
我第一次尝试JSON.parse("{"+jsn+"}");
。
答案 0 :(得分:2)
您的JSON格式不正确,因为您的对象键必须用引号括起来。以下内容适用:
var jsn = '{"test": true, "stringtest": "hallo"}';
JSON.parse(jsn);
编辑:RFC4627,指定JSON格式,声明:
2.2。对象
对象结构表示为一对花括号
包含零个或多个名称/值对(或成员)。 名称是
串即可。每个名称后面都有一个冒号,分隔名称
从价值。单个逗号将值与后续值分开 名称。对象中的名称应该是唯一的。object = begin-object [ member *( value-separator member ) ] end-object member = string name-separator value
如您所见,JSON对象由名称/值对组成,其中名称是字符串。 RFC再次说:
字符串的表示类似于C中使用的约定 编程语言家族。 字符串以
开头和结尾 引号。所有Unicode字符都可以放在中 引号除了必须转义的字符外:
引号,反向固定和控制字符(U + 0000
通过U + 001F)。string = quotation-mark * char quotation-mark
quotation-mark =%x22; “强>
因此,根据RFC,密钥必须用双引号括起来,而不是单引号。不过,我猜一些解析器可能更宽容并接受它们,但我坚持标准。