首页 > 解决方案 > 是否可以在json数组中按值搜索

问题描述

假设我将这个 json 数组存储在一个动态的 newtonsoft json 对象中:

[
   {
      "Name":"Amal",
      "Country":"India"
   },
   {
      "Name":"Luke",
      "Country":"England"
   },
   {
      "Name":"Tom",
      "Country":"Australia"
   },
   {
      "Name":"Ram",
      "Country":"India"
   },
   {
      "Name":"Jane",
      "Country":"France"
   }
]

我需要能够返回名称以“e”结尾的数组中的 json 对象

寻找这些结果:

 [{ "Name":"Luke", "Country":"England" }, { "Name":"Jane", "Country":"France" }]

标签: c#jsonjson.net

解决方案


您需要的是使用Linq扩展和 Value<string>()方法,JToken因为JArrayJTokens 的集合。JArray然后用过滤的令牌构建一个新的。

var json = "[ { \"Name\":\"Amal\", \"Country\":\"India\" }, { \"Name\":\"Luke\", \"Country\":\"England\" }, { \"Name\":\"Tom\", \"Country\":\"Australia\" }, { \"Name\":\"Ram\", \"Country\":\"India\" }, { \"Name\":\"Jane\", \"Country\":\"France\" }]";
var arr = JArray.Parse(json);       
var result = new JArray( arr.Where(r=> r.Value<string>("Name").EndsWith("e")));

小提琴


推荐阅读