c# - 使用 LINQ 根据字段过滤 JSON 对象

标签 c# .net json linq

<分区>

我有一组包含联系方式的 JSON 对象,当它为真时,我必须根据该字段过滤它们。

这是示例数据

{ 
    "9002":{
        "Contacts": [
            {
                "Source": 0,
                "Id": 0,
                "Details": {
                    "Harlson": "9015",
                    "adssd": "9022",
                    "First Name": "Gary",
                    "Last Name": "Harlson"
                },
                "Pinned": true
            }
        ]
    }
}

我想使用 LINQ 查询根据 Pinned 变为 true 时过滤所有详细信息。

最佳答案

您可以反序列化 Json(使用 NewtonSoft Json)并使用 Linq 通过 Pinned=True 查询项目

var rootInstance = JsonConvert.DeserializeObject<RootObject>(json);
var result = rootInstance.Id.Contacts.Where(x=>x.Pinned);

类定义为

public class Details
{
    [JsonProperty("Harlson")]
    public string Harlson { get; set; }
    [JsonProperty("adssd")]
    public string adssd { get; set; }
    [JsonProperty("First Name")]
    public string FirstName { get; set; }
    [JsonProperty("Last Name")]
    public string LastName { get; set; }
}

public class Contact
{
    public int Source { get; set; }
    public int Id { get; set; }
    public Details Details { get; set; }
    public bool Pinned { get; set; }
}

public class Id
{
    public List<Contact> Contacts { get; set; }
}

public class RootObject
{
    [JsonProperty("9002")]
    public Id Id { get; set; }
}

关于c# - 使用 LINQ 根据字段过滤 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59099681/

相关文章:

javascript - 使用循环添加标记时,Leafletjs map 叠加将停止工作

c# - Notepad++ 中的 NppExec 不重新编译我的 C# 代码

c# - 无法在 Entity Framework 中获取导航属性

.net - 什么是 itext 7 相当于 itext 5 中的 pdfstamper 类

.net - 如何抑制 'Found conflicts between different versions of' 警告?

python - NumPy 数组不是 JSON 可序列化的

javascript - 在javascript中定义一个对象

c# - 我可以在 lock 语句中使用 Interlocked.Increment 吗?

c# - 如何将 Microsoft.jQuery.Unobtrusive.Ajax 与 libman(库管理器)asp.net Core 2.1 一起使用?

.net - 关于GetHashCode实现的问题