Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.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
$id标记是JSON标准吗?_Json_Json.net - Fatal编程技术网

$id标记是JSON标准吗?

$id标记是JSON标准吗?,json,json.net,Json,Json.net,使用使用第三方Json.NET库的Microsoft WebApi 2,假设我返回以下人员数组: 为了避免循环引用,它Json.NET输出以下Json: [ { "$id":"1", "Name":"Alice", "Sibling":{ "$id":"2", "Name":"Bob", "Sibling":{ "$ref":"1" }

使用使用第三方Json.NET库的Microsoft WebApi 2,假设我返回以下人员数组:

为了避免循环引用,它Json.NET输出以下Json:

[  
   {  
      "$id":"1",
      "Name":"Alice",
      "Sibling":{  
         "$id":"2",
         "Name":"Bob",
         "Sibling":{  
            "$ref":"1"
         }
      }
   },
   {  
      "$ref":"2"
   }
]
Javascript的JSON.parse方法对这种语法一无所知。我查阅了JSON规范,看到了$ref关键字在指针中的用法,但没有看到它们使用$id关键字。这是关于Json.NET的奇怪之处吗?或者是JSON规范中没有广泛支持的东西?

否,$id和$ref不是JSON标准的一部分,您会注意到它在任何地方都没有提到;这是Json.Net使用的一种约定,用于标记对象并引用它们,以便在反序列化时保留引用。其他JSON库可能遵循也可能不遵循相同的约定。有关更多信息,请参阅Json.Net文档中的

注意:有一些javascript方法可以处理从Json.Net解析$id/$ref符号的问题。您可能对以下示例感兴趣:


json就是json。这些只是关键:价值观。这些键/值代表什么取决于生成数据结构的代码,该数据结构最终被编码为json。json本身并不关心键是id、$id还是foobar。您拥有的是完全有效的json。包含两个对象的数组,包含更多子数据。
[  
   {  
      "$id":"1",
      "Name":"Alice",
      "Sibling":{  
         "$id":"2",
         "Name":"Bob",
         "Sibling":{  
            "$ref":"1"
         }
      }
   },
   {  
      "$ref":"2"
   }
]