c# - 根据子元素值(C#、Json.NET)为元素选择 token 模式

标签 c# .net json json.net

正在研究的 JSON 结构如下所示:

string jsonText 
    = @"{ ""348975"":{""name"":""nam1"",""value"":1}"
    + @", ""876132"":{""name"":""nam2"",""value"":2}"
    + @", ... }";

需要为具有给定名称的对象选择值元素。对于上面的 JSON,假设给定名称是“nam2”,返回值必须是 2。有人尝试使用:

JObject jsonObject = JObject.Parse(jsonText);
string searchName = "nam2";
JToken myValue = jsonObject.SelectToken("[?(@.name=" + searchName + ")].value");

和类似的 JSON 路径字符串,但没有成功。 对所有元素进行迭代是可能且简单的,但需要知道是否可以使用 SelectToken 完成。

请协助。 谢谢!

最佳答案

我无法使用 JSONPath 让它工作,我尝试了以下似乎应该工作的方法:

$.*[?(@.name == 'nam1')]

然而事实并非如此。如果您的唯一目标是在一行中完成,则可以改用 LINQ to JSON:

JToken myValue = jsonObject.SelectTokens("$.*")
    .SingleOrDefault (jt => jt["name"]
    .Value<string>() == searchName); 

关于c# - 根据子元素值(C#、Json.NET)为元素选择 token 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28942633/

相关文章:

c# - Umbraco - GetMedia 未返回正确的 url

c# - Excel 与 c# : Exculde first rows when copying a range

c# - 检测字符串中的垃圾字符

c++ - Windows 文件 mfreadwrite.h 出错

android - 在 ListView 中显示来自远程服务器的数据

c# - 将 c# 按引用类型转换为匹配的非按引用类型

c# - Windows窗体应用程序-缓慢/无响应的UI

c# - 通过串口查看网站

c# - 将用户身份从 MVC 传递到 Web Api

Javascript 原型(prototype)返回值未定义,即使它在原型(prototype)方法中是正确的