我有一些 JSON 发送到我的网络服务,看起来像这样。
{
root: [
{
"key": "foo1",
"val": "150"
},
{
"key": "foo2",
"val": "220"
},
{
"key": "foo3",
"val": "300"
},
{
"key": "dataid",
"val": "2289"
}
]
}
假设我想返回
val
的值哪里key
等于 "dataid"
.我将如何使用 JSON.Net 来做到这一点图书馆?我知道我可以遍历这些值来找到它,但对象很可能比这里的这个例子大得多。
提前致谢
最佳答案
好吧,某些事情将不得不在某个时候循环。如果您需要从同一个 JSON 中通过键获取大量值,您可能应该构建一个 Dictionary<string, string>
从它 - 这意味着循环一次(显式或使用 LINQ ToDictionary
方法),但之后可以快速访问。
这是一些示例代码:
using System;
using System.IO;
using System.Linq;
using Newtonsoft.Json.Linq;
class Test
{
static void Main()
{
string text = File.ReadAllText("test.json");
JObject obj = JObject.Parse(text);
JArray root = (JArray) obj["root"];
var dictionary = root.ToDictionary(x => (string) x["key"],
x => (string) x["val"]);
Console.WriteLine(dictionary["dataid"]);
}
}
关于.Net Linq 到 JSON 与 Newtonsoft JSON 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5033178/