C# 如何构建Json树

C# 如何构建Json树,c#,C#,以下是我想要构建的json: { id: 0, item: [{ id: 1, text: "1111" }, { id: 2, text: "222222", item: [{ id: "21", text: "child" }] }, { id: 3, text: "3333" }] } 现在我无法建造一棵树,我只能建造这样的东西: [{"id":1,"text":"1111"}

以下是我想要构建的json:

{
    id: 0,
    item: [{ id: 1, text: "1111"
    }, {
        id: 2,
        text: "222222",
        item: [{ id: "21", text: "child" }]
        }, {
        id: 3, text: "3333"
    }]
}
现在我无法建造一棵树,我只能建造这样的东西:

[{"id":1,"text":"1111"},{"id":21,"text":"child"]
我用以下代码构建它:

var serializer = new JavaScriptSerializer();
var jsonString = serializer.Serialize(listOfPairsOfTextAndId);
var jsonString = JsonConvert.SerializeObject(graph);

但是如何在c#中构建给定的树?

您可以创建这样的函数

   public static string GetJSON(object obj)
    {
        var oSerializer = new JavaScriptSerializer();
        var sbJsonResults = new StringBuilder();
        oSerializer.Serialize(obj, sbJsonResults);
        return sbJsonResults.ToString();
    }
然后调用这个函数

编辑1 可以创建要使用的表单的自定义类。
创建
列表
,并将其传递到上述函数中

它会起作用。

您需要创建一些包含要序列化为该格式的数据的对象。我使用一个在线生成器创建了几个快速类,根据需要进行重构以供使用

这些是课程

public class Item2
{
    public string id { get; set; }
    public string text { get; set; }
}

public class Item
{
    public int id { get; set; }
    public string text { get; set; }
    public List<Item2> item { get; set; }
}

public class RootObject
{
    public int id { get; set; }
    public List<Item> item { get; set; }
}
公共类项目2
{
公共字符串id{get;set;}
公共字符串文本{get;set;}
}
公共类项目
{
公共int id{get;set;}
公共字符串文本{get;set;}
公共列表项{get;set;}
}
公共类根对象
{
公共int id{get;set;}
公共列表项{get;set;}
}
您将首先创建
RootObject
,并根据需要设置其属性(确保初始化列表)。在此之后,只需对构成输出的其他类执行相同的操作

完成后,简单地序列化RootObject实例,您将获得请求的输出


我曾经根据所需的JSON输出生成这些类。

Fø首先的问题是,使用匿名对象来描述图形I C#有点困难。但您可以创建一个类:

class Item {

  public Int32 id { get; set; }

  public String text { get; set; }

  public Item[] item { get; set; }

}
然后,您可以创建对象图:

var graph = new Item {
  id = 0,
  item = new[] {
    new Item {
      id = 1,
      text = "1111"
    },
    new Item {
      id = 2,
      text = "222222",
      item = new[] {
        new Item {
          id = 21,
          text = "child"
        }
      }
    },
    new Item {
      id = 3,
      text = "3333"
    }
  }
};
您正在使用Microsoft JSON序列化程序,该序列化程序将生成以下JSON:

{"id":0,"text":null,"item":[{"id":1,"text":"1111","item":null},{"id":2,"text":"222222","item":[{"id":21,"text":"child","item":null}]},{"id":3,"text":"3333","item":null}]} {"id":0,"item":[{"id":1,"text":"1111"},{"id":2,"text":"222222","item":[{"id":21,"text":"child"}]},{"id":3,"text":"3333"}]} 然后使用以下代码执行序列化:

var serializer = new JavaScriptSerializer();
var jsonString = serializer.Serialize(listOfPairsOfTextAndId);
var jsonString = JsonConvert.SerializeObject(graph);
您将获得以下JSON:

{"id":0,"text":null,"item":[{"id":1,"text":"1111","item":null},{"id":2,"text":"222222","item":[{"id":21,"text":"child","item":null}]},{"id":3,"text":"3333","item":null}]} {"id":0,"item":[{"id":1,"text":"1111"},{"id":2,"text":"222222","item":[{"id":21,"text":"child"}]},{"id":3,"text":"3333"}]} {“id”:0,项:[{“id”:1,文本:”“1111”},{“id”:2,文本:”“222222”,“项:[{“id”:21,文本:”“child”}]},{“id”:3,文本:”“3333”}
除了你问题中的语法错误之外,这就是你要问的。

对不起,格式设置让我很生气。我的错误。JSON对象的键必须在引号中。您的数据是什么。我的意思是,你的原始数据在哪里?原始数据是一本字典,里面有几对id和文本。我想制作给定的树。@petko_stankoski您可以看到我的编辑。