【问题标题】:Is it possible to search by value in an array of json是否可以在json数组中按值搜索
【发布时间】:2020-10-08 17:06:56
【问题描述】:

假设我将这个 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#解析一个Json字符串,或者如何做列表处理吗?到目前为止,您尝试了什么?
  • 您好,欢迎来到 SO!这可以做到(不止几种方法),您能否更新您的帖子以包含您尝试过的内容和无效的内容?
  • 也可以创建一个类,以后想用,反序列化成那个类就行了

标签: c# json json.net


【解决方案1】:

您需要的是使用JTokenLinq 扩展和Value<string>() 方法,因为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")));

Fiddle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-24
    • 2014-11-07
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多