根据子元素值(C#,Json.NET)的元素的SelectTokens模式

时间:2015-03-09 13:01:05

标签: c# .net json json.net

正在调查的JSON结构如下所示:

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

需要为具有给定名称的对象选择value元素。对于上面的JSON,假设给定的名称是" nam2",返回的值必须是2.一个试图使用:

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

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

请协助。 谢谢!

1 个答案:

答案 0 :(得分:1)

我无法使用JSONPath使其工作,我尝试了以下看起来应该可以工作:

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

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

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