.Net Linq 到 JSON 与 Newtonsoft JSON 库

标签 .net json linq json.net

我有一些 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/

相关文章:

javascript - JSON 解析日期格式?

c# - 为 Entity Framework 制作一个全局过滤器

sql - 如何将带有计数的sql转换为linq

c# - LINQ 如何在 using 语句中延迟执行

c# - ocelot api网关中的System.InvalidOperationException

c# - 从序列号生成激活 key

c# - 如何创建带圆角的用户控件?

.net - Microsoft.VisualBasic.Collection 和 .NET System.Collections.Generic.Dictionary(Of TKey, TValue) 之间已知的性能差异是什么?

java - Play Framework 2.1 无法处理来自 Controller 的 JSON POST 请求

r - 从 R 中的一行和一列解析嵌套 JSON