1

作成したい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);

しかし、特定のツリーを c# で構築するにはどうすればよいでしょうか?

4

3 に答える 3

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; }
}

最初のものを作成し、RootObject必要に応じてそのプロパティを設定します (必ずリストを初期化してください)。その後、出力を構成する他のクラスについても同じことを行うだけです。

完了したら、単純に RootObject インスタンスをシリアライズすると、要求された出力が得られます。

http://json2csharp.com/を使用して、目的の JSON 出力に基づいてこれらのクラスを生成しました。

于 2013-05-31T12:18:50.557 に答える
-1

このような関数を作成できます

   public static string GetJSON(object obj)
    {
        var oSerializer = new JavaScriptSerializer();
        var sbJsonResults = new StringBuilder();
        oSerializer.Serialize(obj, sbJsonResults);
        return sbJsonResults.ToString();
    }

そして、この関数を呼び出します。

編集 1

使用するフォームのカスタム クラスを作成できます。
それを作成List<class>して上記の関数
に渡すと動作します。

于 2013-05-31T12:13:51.497 に答える