如果我有一个来自www.example.com的序列化JSONjson.net,如下所示:
User:{id:1,{Foo{id:1,prop:1}},
FooList{$ref: "1",Foo{id:2,prop:13}}
我想在FooList上敲除输出foreach,但我不确定如何继续,因为$ref可能会抛出一些东西。
我认为解决方案是通过不使用以下命令强制所有Foos在FooList中呈现:
PreserveReferencesHandling = PreserveReferencesHandling.Objects
但那似乎是浪费。
6条答案
按热度按时间vfh0ocws1#
我发现了一些错误并实现了数组支持:
2ul0zpep2#
您从服务器接收的json对象包含循环引用。在使用该对象之前,您必须首先删除该对象的所有
$ref
属性,这意味着您必须放置此链接指向的对象来代替$ref : "1"
。为此,你应该查看Douglas Crockfords Plugin on github。有一个cycle.js可以为你做这项工作。
也可以使用以下代码(未测试):
如果有用的话告诉我!
wa7juj8i3#
如果利用
JSON.parse
的reviver
参数,这实际上非常简单。下面的示例。请查看浏览器控制台的输出,因为StackOverflow的代码片段控制台输出不会提供结果的准确图片。
第一个
a9wyjsp74#
我在 Alexandria ·瓦西里耶夫的回答中遇到了数组校正的麻烦。
我不能评论他的回答(不要自己的名声不够分;- )),所以我不得不添加一个新的答案...(在那里我有一个弹出作为最佳做法,不回答其他答案,只回答原来的问题- bof)
r1wp621o5#
在可接受的实现中,如果你在检查一个数组时遇到一个原始值,你将返回该值并覆盖该数组。你想继续检查数组的所有元素,并在最后返回数组。
mtb9vblg6#
我的解决方案(也适用于数组):
用法:重新生成JsonDotNetObj(jsonDotNetResponse)
代码: