C# 在c中从更大的json创建精简的json#

C# 在c中从更大的json创建精简的json#,c#,json,linq,json.net,C#,Json,Linq,Json.net,我有一个类似于此的来自服务器的json(具有多个嵌套json对象) } 服务组件将仅以简化的json格式向UX发送相关数据。 我想提取employee.fullname.firstname和employee.project.projectname 输出应该是 { "employee": [{ "fullname": { "firstname": "abcd", }, "project": [{

我有一个类似于此的来自服务器的json(具有多个嵌套json对象)

}

服务组件将仅以简化的json格式向UX发送相关数据。
我想提取employee.fullname.firstname和employee.project.projectname

输出应该是

{
"employee": [{
        "fullname": {
            "firstname": "abcd",
        },
        "project": [{
                "projectname":"abcd_1",
            }, {
                "projectname":"abcd_2",
            }, {
                "projectname":"abcd_3",
            }
        ]
    },{
        "fullname": {
            "firstname": "abcd",

        },
        "project": [{
                "projectname":"abcd_1",

            }, {
                "projectname":"abcd_2",

            }, {
                "projectname":"abcd_3",

            }
        ]
      }
    ]
}

我压平了Json,但它给出了employee.0.fullname.firstname和employee.0.project.0.projectname等标记


使用/不使用展平进行提取的最佳方法是什么?

下面是一个示例,该示例使用仅包含所需属性的poco,您可以在此对象中反序列化该对象,然后序列化回json以获得所需的内容

void Main()
{
    var myJson = @"
    {
        ""employee"": [{
            ""fullname"": {
                ""firstname"": ""abcd"",
                ""lastname"": ""defg""
            },
            ""project"": [{
                    ""projectname"":""abcd_1"",
                    ""datejoined"": ""2019-06-18T01:29:38.6013262+00:00"",
                    ""projectmanager"": ""abcdM1"",
                }, {
                    ""projectname"":""abcd_2"",
                    ""datejoined"": ""2018-06-18T01:29:38.6013262+00:00"",
                    ""projectmanager"": ""abcdM2"",
                }, {
                    ""projectname"":""abcd_3"",
                    ""datejoined"": ""2017-06-18T01:29:38.6013262+00:00"",
                    ""projectmanager"": ""abcdM3"",
                }
            ]
        },{
            ""fullname"": {
                ""firstname"": ""abcd"",
                ""lastname"": ""defg""      
            },
            ""project"": [{
                    ""projectname"":""abcd_1"",
                    ""datejoined"": ""2019-06-18T01:29:38.6013262+00:00"",
                    ""projectmanager"": ""abcdM1"",
                }, {
                    ""projectname"":""abcd_2"",
                    ""datejoined"": ""2018-06-18T01:29:38.6013262+00:00"",
                    ""projectmanager"": ""abcdM2"",
                }, {
                    ""projectname"":""abcd_3"",
                    ""datejoined"": ""2017-06-18T01:29:38.6013262+00:00"",
                    ""projectmanager"": ""abcdM3"",
                }
            ]
          }
        ]
    }";


    var myObject = Newtonsoft.Json.JsonConvert.DeserializeObject<Employee>(myJson);
    var myTrimmedJson = Newtonsoft.Json.JsonConvert.SerializeObject(myObject);
    Console.WriteLine(myTrimmedJson);
}

public class Fullname
{
    public String firstname { get; set; }
    //public String lastname { get; set; }
}

public class Project
{
    public String projectname { get; set; }
    //public String datejoined { get; set; }
    //public String projectmanager { get; set; }
}

public class Person
{
    public Fullname fullname { get; set; }
    public List<Project> project { get; set; }
}

public class Employee
{
    public List<Person> employee { get; set; }
}
void Main()
{
var myJson=@”
{
“雇员”:[{
“全名”:{
“firstname”:“abcd”,
“lastname”:“defg”
},
“项目”:[{
“项目名称”:“abcd_1”,
“datejoined”:“2019-06-18T01:29:38.6013262+00:00”,
“项目管理器”:“abcdM1”,
}, {
“项目名称”:“abcd_2”,
“日期加入”:“2018-06-18T01:29:38.6013262+00:00”,
“项目管理器”:“abcdM2”,
}, {
“项目名称”:“abcd_3”,
“日期加入”:“2017-06-18T01:29:38.6013262+00:00”,
“项目管理器”:“abcdM3”,
}
]
},{
“全名”:{
“firstname”:“abcd”,
“lastname”:“defg”
},
“项目”:[{
“项目名称”:“abcd_1”,
“datejoined”:“2019-06-18T01:29:38.6013262+00:00”,
“项目管理器”:“abcdM1”,
}, {
“项目名称”:“abcd_2”,
“日期加入”:“2018-06-18T01:29:38.6013262+00:00”,
“项目管理器”:“abcdM2”,
}, {
“项目名称”:“abcd_3”,
“日期加入”:“2017-06-18T01:29:38.6013262+00:00”,
“项目管理器”:“abcdM3”,
}
]
}
]
}";
var myObject=Newtonsoft.Json.JsonConvert.DeserializeObject(myJson);
var myTrimmedJson=Newtonsoft.Json.JsonConvert.SerializeObject(myObject);
Console.WriteLine(myTrimmedJson);
}
公共类全名
{
公共字符串名{get;set;}
//公共字符串lastname{get;set;}
}
公共类项目
{
公共字符串projectname{get;set;}
//公共字符串datejoined{get;set;}
//公共字符串项目管理器{get;set;}
}
公共阶层人士
{
公共全名全名{get;set;}
公共列表项目{get;set;}
}
公营雇员
{
公共列表雇员{get;set;}
}

下面是一个示例,它使用的poco只包含您想要的属性,您可以在此对象中反序列化它,然后序列化回json以获得您想要的内容

void Main()
{
    var myJson = @"
    {
        ""employee"": [{
            ""fullname"": {
                ""firstname"": ""abcd"",
                ""lastname"": ""defg""
            },
            ""project"": [{
                    ""projectname"":""abcd_1"",
                    ""datejoined"": ""2019-06-18T01:29:38.6013262+00:00"",
                    ""projectmanager"": ""abcdM1"",
                }, {
                    ""projectname"":""abcd_2"",
                    ""datejoined"": ""2018-06-18T01:29:38.6013262+00:00"",
                    ""projectmanager"": ""abcdM2"",
                }, {
                    ""projectname"":""abcd_3"",
                    ""datejoined"": ""2017-06-18T01:29:38.6013262+00:00"",
                    ""projectmanager"": ""abcdM3"",
                }
            ]
        },{
            ""fullname"": {
                ""firstname"": ""abcd"",
                ""lastname"": ""defg""      
            },
            ""project"": [{
                    ""projectname"":""abcd_1"",
                    ""datejoined"": ""2019-06-18T01:29:38.6013262+00:00"",
                    ""projectmanager"": ""abcdM1"",
                }, {
                    ""projectname"":""abcd_2"",
                    ""datejoined"": ""2018-06-18T01:29:38.6013262+00:00"",
                    ""projectmanager"": ""abcdM2"",
                }, {
                    ""projectname"":""abcd_3"",
                    ""datejoined"": ""2017-06-18T01:29:38.6013262+00:00"",
                    ""projectmanager"": ""abcdM3"",
                }
            ]
          }
        ]
    }";


    var myObject = Newtonsoft.Json.JsonConvert.DeserializeObject<Employee>(myJson);
    var myTrimmedJson = Newtonsoft.Json.JsonConvert.SerializeObject(myObject);
    Console.WriteLine(myTrimmedJson);
}

public class Fullname
{
    public String firstname { get; set; }
    //public String lastname { get; set; }
}

public class Project
{
    public String projectname { get; set; }
    //public String datejoined { get; set; }
    //public String projectmanager { get; set; }
}

public class Person
{
    public Fullname fullname { get; set; }
    public List<Project> project { get; set; }
}

public class Employee
{
    public List<Person> employee { get; set; }
}
void Main()
{
var myJson=@”
{
“雇员”:[{
“全名”:{
“firstname”:“abcd”,
“lastname”:“defg”
},
“项目”:[{
“项目名称”:“abcd_1”,
“datejoined”:“2019-06-18T01:29:38.6013262+00:00”,
“项目管理器”:“abcdM1”,
}, {
“项目名称”:“abcd_2”,
“日期加入”:“2018-06-18T01:29:38.6013262+00:00”,
“项目管理器”:“abcdM2”,
}, {
“项目名称”:“abcd_3”,
“日期加入”:“2017-06-18T01:29:38.6013262+00:00”,
“项目管理器”:“abcdM3”,
}
]
},{
“全名”:{
“firstname”:“abcd”,
“lastname”:“defg”
},
“项目”:[{
“项目名称”:“abcd_1”,
“datejoined”:“2019-06-18T01:29:38.6013262+00:00”,
“项目管理器”:“abcdM1”,
}, {
“项目名称”:“abcd_2”,
“日期加入”:“2018-06-18T01:29:38.6013262+00:00”,
“项目管理器”:“abcdM2”,
}, {
“项目名称”:“abcd_3”,
“日期加入”:“2017-06-18T01:29:38.6013262+00:00”,
“项目管理器”:“abcdM3”,
}
]
}
]
}";
var myObject=Newtonsoft.Json.JsonConvert.DeserializeObject(myJson);
var myTrimmedJson=Newtonsoft.Json.JsonConvert.SerializeObject(myObject);
Console.WriteLine(myTrimmedJson);
}
公共类全名
{
公共字符串名{get;set;}
//公共字符串lastname{get;set;}
}
公共类项目
{
公共字符串projectname{get;set;}
//公共字符串datejoined{get;set;}
//公共字符串项目管理器{get;set;}
}
公共阶层人士
{
公共全名全名{get;set;}
公共列表项目{get;set;}
}
公营雇员
{
公共列表雇员{get;set;}
}

您可以创建小型接口,首先将json转换为类对象,然后将其类型转换为特定接口,然后使用newtonSoft再次序列化,它将提供小型json

您可以创建小型接口,首先将json转换为类对象,然后将其类型转换为特定接口,然后再次使用newtonSoft对其进行序列化,它将提供小型JSONwill
JsonExtensions.RemoveAllExcept(此JObject对象,IEnumerable路径)
from以满足您的需要?感谢您的回复。我想它会起作用的。威尔