0

.net Web サービスを使用して以下の json を生成する最良の方法は何でしょうか? フロントエンドでjqueryを介してこれを呼び出す予定です。

手でつなぎ合わせる必要があるのか​​ 、それとも返されたときにこれに相当するC#に使用できるオブジェクト構造があるのか​​ どうかはわかりません。

{'Option 1': {'Suboption':2},'Option 2': {'Suboption 2': {'Subsub 1':5, 'Subsub 2':6}}}

今、私はこのようにフォーマットされたデータを持っています

Id  |   Text    |  ParentId
1     Option1       null
2     SubOption      1
3     Option2       null
4     SubOption2     3
5     SubSub1        4
6     SubSub2        4

ただし、json の生成が容易になる場合は、データ構造を変更できます。

編集


最終的な解決策は、文字列ビルダーを使用して JSON を形成するループです。

ありがとう!

4

2 に答える 2

0

ツリーのような構造をシリアライズしようとしているように見えるので、何らかのツリーを構築する必要があります。次のようなものを使用できます。

class Node
{
  public String Text {get;set;}
  public Node[] Children {get;set;}
  public int Id {get;set;} // if you still need this
}

ただし、物事は逆になります(親ではなく子供にリンクします)。

また、この手法ではキーがレベルごとに異なるため、正確な出力を達成することはできません。ここにあるようなクラスを使用すると、JSON キーは常に "Text"、"Children"、および "Id" になりますが、それで十分です。

それが望ましくない場合は、値が文字列またはその他の辞書である Dictionary<String, Object> をいつでも使用できます。

于 2012-07-18T16:22:08.730 に答える
0

ネストをサポートするには、再帰的なデータ構造が必要です。

public class Item
{
    public int ID { get; set; }
    public string Text { get; set; }
    public Item SubItem { get; set; }
}

var myObject = new Item
{
    Id = 1, 
    Text = "Some Text",
    SubItem = new Item { Id = 2, Text = "SubItem" }
}

var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
string json = serializer.Serialize(myObject);
于 2012-07-18T15:59:56.183 に答える