$id标记是JSON标准吗?
使用使用第三方Json.NET库的Microsoft WebApi 2,假设我返回以下人员数组: 为了避免循环引用,它Json.NET输出以下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" }
[
{
"$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"
}
]