使用 Microsoft WebApi 2(使用第三方 Json.NET 库),假设我返回以下内容people
array:
var p1 = new Person("Alice");
var p2 = new Person("Bob");
p1.Sibling = p2;
p2.Sibling = p1;
var people = new[] { p1, p2 };
为了避免循环引用,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 规范中的某些内容并未得到广泛支持?
No, $id
and $ref
不是 JSON 标准的一部分(您会注意到它没有在任何地方提到JSON.org);它是 Json.Net 用于标记对象并引用它们以保留反序列化引用的约定。其他 JSON 库可能遵循也可能不遵循相同的约定。看保留对象引用有关详细信息,请参阅 Json.Net 文档。
注意:有一些 javascript 方法可以处理解析$id
/$ref
来自 Json.Net 的表示法。您可能对这些示例感兴趣:
- 解决 JSON 对象的循环引用
- 如何从 Json.NET 序列化 JSON 恢复循环引用(例如“$id”)?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)