根据 c# 中的类型对 json 不同类型的列表进行分组
Grouping the List of json of different types as per their type in c#
我有一个 json 不同类型对象的列表(无模式)。但是,每一行都包含结构的类型。我需要根据他们的类型对其进行分组。
我需要将此 Json 分组。
输入如下
var result = [{ "firstName":"John", "lastName":"Doe", "Type":"Person" },
{ "fruit":"apple", "Type":"Diet" },
{ "length":100, "width":60, "height":30,, "Type":"Measure" },
{ "firstName":"Shivang", "lastName":"Mittal", "Type":"Person" }]
预期输出:
var persons= [{ "firstName":"John", "lastName":"Doe", "Type":"Person" },
{ "firstName":"Shivang", "lastName":"Mittal", "Type":"Person" }];
var Diets = [{ "fruit":"apple", "Type":"Diet" }];
var Measures = [{ "length":100, "width":60, "height":30,, "Type":"" }];
如何根据 C# 中的类型对其进行分组?
对你来说更好的是改变你的json格式:
{
"Customer": [{"firstName":"John", "lastName":"Doe", "Type":"Person" }],
"Fruit": [{"fruit":"apple", "Type":"Diet" }],
"Length": [{"length":100, "width":60, "height":30, "Type":"Measure" }]
}
然后就容易了
public class JsonType()
{
public CustomerType Customer {get; set;}
public FruitType Fruit {get; set;}
public LengthType Length {get; set;}
}
public class CustomerType()
{
public string firstName {get; set;}
public string lastName {get; set;}
public string Type {get; set;}
}
public class FruitType()
{
public string fruit {get; set;}
public string Type {get; set;}
}
等...
var result = JsonConvert.DeserializeObject<JsonType>(yourJson);
不使用强类型 objects/changing 架构:
var jarray = JArray.Parse(@"[{ ""firstName"":""John"", ""lastName"":""Doe"", ""Type"":""Person"" },
{ ""fruit"":""apple"", ""Type"":""Diet"" },
{ ""length"":100, ""width"":60, ""height"":30, ""Type"":""Measure"" },
{ ""firstName"":""Shivang"", ""lastName"":""Mittal"", ""Type"":""Person"" }]");
var query = jarray
.GroupBy(g => g["Type"])
.Select(g => string.Format("var {0}={1};{2}", g.Key, new JArray(g.ToList()), Environment.NewLine));
string result = string.Join(string.Empty, query);
我有一个 json 不同类型对象的列表(无模式)。但是,每一行都包含结构的类型。我需要根据他们的类型对其进行分组。 我需要将此 Json 分组。 输入如下
var result = [{ "firstName":"John", "lastName":"Doe", "Type":"Person" },
{ "fruit":"apple", "Type":"Diet" },
{ "length":100, "width":60, "height":30,, "Type":"Measure" },
{ "firstName":"Shivang", "lastName":"Mittal", "Type":"Person" }]
预期输出:
var persons= [{ "firstName":"John", "lastName":"Doe", "Type":"Person" },
{ "firstName":"Shivang", "lastName":"Mittal", "Type":"Person" }];
var Diets = [{ "fruit":"apple", "Type":"Diet" }];
var Measures = [{ "length":100, "width":60, "height":30,, "Type":"" }];
如何根据 C# 中的类型对其进行分组?
对你来说更好的是改变你的json格式:
{
"Customer": [{"firstName":"John", "lastName":"Doe", "Type":"Person" }],
"Fruit": [{"fruit":"apple", "Type":"Diet" }],
"Length": [{"length":100, "width":60, "height":30, "Type":"Measure" }]
}
然后就容易了
public class JsonType()
{
public CustomerType Customer {get; set;}
public FruitType Fruit {get; set;}
public LengthType Length {get; set;}
}
public class CustomerType()
{
public string firstName {get; set;}
public string lastName {get; set;}
public string Type {get; set;}
}
public class FruitType()
{
public string fruit {get; set;}
public string Type {get; set;}
}
等...
var result = JsonConvert.DeserializeObject<JsonType>(yourJson);
不使用强类型 objects/changing 架构:
var jarray = JArray.Parse(@"[{ ""firstName"":""John"", ""lastName"":""Doe"", ""Type"":""Person"" },
{ ""fruit"":""apple"", ""Type"":""Diet"" },
{ ""length"":100, ""width"":60, ""height"":30, ""Type"":""Measure"" },
{ ""firstName"":""Shivang"", ""lastName"":""Mittal"", ""Type"":""Person"" }]");
var query = jarray
.GroupBy(g => g["Type"])
.Select(g => string.Format("var {0}={1};{2}", g.Key, new JArray(g.ToList()), Environment.NewLine));
string result = string.Join(string.Empty, query);