首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将不同类型的json列表按c#中的类型分组

将不同类型的json列表按c#中的类型分组
EN

Stack Overflow用户
提问于 2015-04-17 11:15:49
回答 2查看 1.1K关注 0票数 1

我有一个不同类型对象的json列表(Schemaless)。但是,每一行都包含结构的类型。我需要按他们的类型分组。我要把这个Json组织起来。输入如下

代码语言:javascript
复制
 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" }]

预期产出:

代码语言:javascript
复制
    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#中的类型对其进行分组?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-17 12:10:33

不使用强类型对象/更改模式:

代码语言:javascript
复制
  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);
票数 2
EN

Stack Overflow用户

发布于 2015-04-17 11:25:28

对您更好的是更改您的json格式:

代码语言:javascript
复制
{
   "Customer": [{"firstName":"John", "lastName":"Doe", "Type":"Person" }],
   "Fruit": [{"fruit":"apple", "Type":"Diet" }],
   "Length": [{"length":100, "width":60, "height":30, "Type":"Measure" }]
}

然后就很容易了

代码语言:javascript
复制
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;}
}

等等。

代码语言:javascript
复制
var result = JsonConvert.DeserializeObject<JsonType>(yourJson);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29697708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档