c# - json.net 可枚举

标签 c# c#-3.0 json.net

我有以下json文件

{"fields":[
  {
     "status":"active",
     "external_id":"title",
     "config":{},
     "field_id":11848871,
     "label":"Title",
     "values":[
        {
           "value":"Test Deliverable"
        }
     ],
     "type":"text"
  },{
     "status":"active",
     "external_id":"client-name",
     "config":{},
     "field_id":12144855,
     "label":"Client Name",
     "values":[
        {
           "value":"Chcuk Norris"
        }
     ],
     "type":"text"
  }}

我想选择具有 external_id = "title"的字段的值,例如,我正在使用 Json.Net 并且已经解析了对象。我如何在 Json 对象上使用 lambda 或 linq 来做到这一点,我尝试过这样的事情

JObject o = JObject.Parse(json);
Title = o["fields"].Select(q => q["extenral_id"].Values[0] == "title");

这在语法方面是不正确的。我不是很精通 Lambda 或 Linq 认为它已经存在了一段时间。感谢帮助

谢谢

叶海亚

最佳答案

或者你可以这样做:

 string json = "{\"fields\":[{\"status\":\"active\",\"external_id\":\"title\",\"config\":{},\"field_id\":11848871,\"label\":\"Title\",\"values\":[{\"value\":\"Test Deliverable\"}],\"type\":\"text\"},{\"status\":\"active\",\"external_id\":\"client-name\",\"config\":{},\"field_id\":12144855,\"label\":\"Client Name\",\"values\":[{\"value\":\"Chcuk Norris\"}],\"type\":\"text\"}]}";

 JObject obj = JObject.Parse(json);

 JArray arr = (JArray)obj["fields"];

 var externalIds = arr.Children().Select(m=>m["external_id"].Value<string>());

externalIds 是一个 IEnumerable 字符串数组

或者您可以将其链接在一起并在一行中选择对象:

var myVal = JObject.Parse(json)["fields"].Children()
                                        .Where(w => w["external_id"].ToString() == "title")
                                        .First();

从那里你可以附加任何你想要的选择器,即如果你想要 external_id 值然后附加 ["external_id"].ToString() 到 first() 选择器的末尾。

关于c# - json.net 可枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11273151/

相关文章:

c# - 是否有任何原因导致 GDI+ 在 64 位操作系统上变慢(或者可能与 Windows 7 相关)

c# - JsonConvert.SerializeObject 中的默认双值处理

.net - 具有动态模型的 Dapper ORM - 如何不返回任何字段而不是 'Field' = NULL?

c# - 当前上下文中不存在名称 'f_name'

c# - 在 Linux 中从 C# Mono 应用程序中运行命令

c# - WPF MVVM 数据模型

c# - Task<TResult>.Result 与等待任务

c#-3.0 - 为什么我不能用 Moq 模拟 MouseButtonEventArgs.GetPosition()?

c# - 如何判断是为 selectmethod 还是 selectcountmethod 调用了 ObjectDataSource OnSelected 事件?

c# - 通过 Linq 使用 Json.Net 查找节点以插入或删除子节点