不确定为什么这个JSON无效

时间:2015-10-26 17:38:32

标签: json

有谁能告诉我为什么这个JSON无效?

{ NetworkOrgID :8 {{'NetworkOrgName':'Network Org'},{'FacilityName':'ACN Clinic ID'},{'City':'ChangedFlag'},{'FacilityName':'ClinicName'},{'PhoneNumber':'Address 1'},{'FaxNumber':'City'},{'MedicalServiceCode':'State'},{'FacilitySpecialties':'Zip'}}}

通过我得到的验证器运行它:

Parse error on line 1:
{    'NetworkOrgID': '8'{
-----^
Expecting 'STRING', '}'

2 个答案:

答案 0 :(得分:3)

您的JSON有几个问题。首先,所有属性名称必须用双引号(")包围:

{ Foo : "bar" }   // Invalid
{ "Foo" : "bar" } // Valid

其次,字符串值必须用双引号(")包围,而不是单引号(')。

{ "Foo" : 'bar' } // Invalid
{ "Foo" : "bar" } // Valid

除此之外,您的JSON存在更严重的问题。我将重新格式化以便于阅读,并添加一些行号以便于讨论:

 1 | {
 2 |   "NetworkOrgID": 8
 3 |   {
 4 |     { "NetworkOrgName": "Network Org" },
 5 |     { "FacilityName": "ACN Clinic ID" },
 6 |     { "City": "ChangedFlag" },
 … |     …
12 |   }
13 | }

即使修复了引号,这种数据结构也没有任何意义。在JSON中,花括号表示一个对象。对象由名称/值对组成:

{ "Foo": 1,
  "Bar": 2,
  "Baz": 3
}

以上是一个包含三个属性名称"Foo""Bar""Baz"的对象,其值为12和{{ 1}}分别。请注意,除了最后一个值之外的每个值后跟逗号(3),除了最后一个。

在你的代码中,你有一个对象(从第1行开始),然后是第2行的一个名称/值对(,)。到目前为止,非常好。但是在第3行你有另一个开口大括号("NetworkOrgID": 8) - 但你不能在这里做到这一点。请记住,对象由名称/值对组成。如果没有为其提供属性名称,则不能将对象放在另一个对象中,例如:

{

接下来,在第4-11行,您有一系列以逗号分隔的对象。每个对象都有一个名称/值对。看起来你可能已经打算将它作为一个数组,它放在方括号中,而不是花括号:

{
  "NetworkOrgID": 8,
  "NestedObject": {
    // ...
  }
}

而且,正如我之前所说,如果它是名称/值对中的值,则只能将其放在另一个对象中。这是有效的JSON:

[
  { "NetworkOrgName": "Network Org" },
  { "FacilityName": "ACN Clinic ID" },
  { "City": "ChangedFlag" },
  // ...
]

如果您要将此反序列化为JavaScript,例如: { "NetworkOrgID": 8 "MyArray": [ { "NetworkOrgName": "Network Org" }, { "FacilityName": "ACN Clinic ID" }, { "City": "ChangedFlag" }, // ... ] } var obj = JSON.parse(json);的值为obj.NetworkOrgID8的值为对象数组,因此obj.MyArray将是对象{{ 1}},obj.MyArray[0]将是{ "NetworkOrgName": "Network Org" },依此类推。

显然,对于该属性,您应该为obj.MyArray[1]提供一个更好的名称。

答案 1 :(得分:-1)

这是有效的:

 { "NetworkOrgID": 8,
"NetworkOrgName": "NetworkOrg",
"FacilityName": "ACNClinicID" .... }