根据子元素值(C#、Json.NET)选择元素的令牌模式

本文关键字:元素 NET 选择 令牌 Json 模式 | 更新日期: 2024-11-07 05:41:28

正在

研究的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 完成。

请协助。谢谢!

根据子元素值(C#、Json.NET)选择元素的令牌模式

我无法使用

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

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

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

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