Extracting JsonObject from JsonArray
我在从 Arry 中提取 JasonObject 时遇到问题,其中包含一些没有名称的对象。我已经通过批量请求表单 graph.facebook.
获得了数组
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
[
{ “code”:200, “headers”:[{…}], “body”:“{ “id“:”255572697884115_1“, “from“:{ “name“:”xyzk“, “id“:”59788447049“}, “message“:”Hey“, “created_time“:”2011–11–04T21:32:50+0000“}”}, { “code”:200, “headers”:[{…}], “body”:“{ “id“:”255572697884115_2“, “from“:{ “name“:”xyzk“, “id“:”59788447049“}, “message“:”:P“, “created_time“:”2012–01–03T21:05:59+0000“}”} ] |
现在我必须阅读包含对象的值”消息”,但我不知道如何访问数组中的对象。谁能帮帮我?
我想使用 System.Json,另外还有 Newtonsoft.Json.
在 Java 中,GetJsonObject() 很容易使用,但我怎样才能成功使用 VSC#?有一个方法 JsonValueLinqExtensions.ToJsonObject 但我不知道如何使用。 sb可以举个例子吗?
到目前为止,谢谢你,
多米尼克
- 检查以下链接,他们可能会对您有所帮助。 stackoverflow.com/questions/2859753/… stackoverflow.com/questions/4611031/…
您可以使用 JavaScriptSerializer 对象例如
将 JSON 解析为 dynamic
1
2 3 4 5 6 |
var serializer = new JavaScriptSerializer();
var result = serializer.Deserialize<dynamic>(json); foreach (var item in result) { Console.WriteLine(item[“body”][“message”]); } |
- 谢谢您的回答。你的建议很好,但它不起作用。转换为动态是可以的,但我可以访问正文。编译器说好的,但我在 foreach 行中得到异常”对象引用未设置为对象实例”……你有什么想法吗?
- 对不起,例外是 System.Collectios.Generic.Dictionary<string,object> 不包含 body 的定义
- {>。这些引号必须删除,我按照以下方式进行:动态结果=JsonArray.Load(s);string st = item.body;动态结果2 = JsonObject.Parse(st);”,”link”:”https://stackoverflow.com/questions/12302374/extracting-jsonobject-from-jsonarray/12302444#comment16524135_12302444″,”body”:”嘿詹姆斯,谢谢你的回复。问题是正文由引号打开:<“body”:”{>。这些引号必须删除,我按照以下方式进行:动态结果=JsonArray.Load(s);string st = item.body;动态结果2 = JsonObject.Parse(st);
- @DominicFrank 提供的代码将起作用。我假设当您解析为 dynamic 对象时,您可以像访问属性一样访问它。但是,如果您通过名称访问它,它就可以正常工作。另一种解决方案是实际创建一个代表每个”项目”的类,并将其直接解析为可以为您提供类型安全的类,例如项目.正文.消息。但是,您认为对您来说是更好的解决方案。
来源:https://www.codenong.com/12302374/