C# 在c中从更大的json创建精简的json#
我有一个类似于此的来自服务器的json(具有多个嵌套json对象) } 服务组件将仅以简化的json格式向UX发送相关数据。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": [{
我想提取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对其进行序列化,它将提供小型JSONwillJsonExtensions.RemoveAllExcept(此JObject对象,IEnumerable路径)
from以满足您的需要?感谢您的回复。我想它会起作用的。威尔