Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么obj.getAttribute中的json字符串不';我不想解析?_Javascript_Json - Fatal编程技术网

Javascript 为什么obj.getAttribute中的json字符串不';我不想解析?

Javascript 为什么obj.getAttribute中的json字符串不';我不想解析?,javascript,json,Javascript,Json,我认为JSON.parse对这些数据做了一些不正确的事情。。我试图删除stringtest:“你好”-没有结果。。。另外,我认为我做错了什么,然后我问了这个问题 第一次我尝试了JSON.parse(“{”+jsn+“}”)您的JSON格式不正确,因为您的对象键必须用引号括起来。以下工作将起作用: var jsn=getAttr(ref,"json-data").toString(); console.log(jsn); //{test: true,stringtest:"hallo"}. it'

我认为
JSON.parse
对这些数据做了一些不正确的事情。。我试图删除stringtest:“你好”-没有结果。。。另外,我认为我做错了什么,然后我问了这个问题


第一次我尝试了
JSON.parse(“{”+jsn+“}”)

您的JSON格式不正确,因为您的对象键必须用引号括起来。以下工作将起作用:

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格式的RFC4627声明:

2.2。物体

对象结构表示为一对花括号
围绕零个或多个名称/值对(或成员)名称是一个
字符串
。每个名称后面都有一个冒号,用于分隔名称
从价值上来说。一个逗号将一个值与后面的值分隔开来
名称对象中的名称应该是唯一的

var jsn = '{"test": true, "stringtest": "hallo"}';
JSON.parse(jsn);
如您所见,JSON对象由名称/值对组成,其中名称是字符串。同样,RFC说:

字符串的表示类似于C语言中使用的约定 编程语言家族字符串以
引号
。所有Unicode字符都可以放在
除必须转义的字符外的引号:
引号、反索利多卡因和控制字符(U+0000
通过U+001F)

字符串=引号*字符引号

引号=%x22;“


因此,根据RFC,键必须被双引号包围,而不是单引号。尽管如此,我想有些解析器可能更宽容,并且接受这两个,但我还是坚持这个标准。

我认为这只是JS object
var obj={som:'qwe'};
,我想。:)Thnx的习惯。
  object = begin-object [ member *( value-separator member ) ]
  end-object

  member = string name-separator value