2011-12-21 9 views
0

私はサーブレットからJSONを出力しますいくつかのJavaコードがあります。 の生成、複雑なツリー状のJSONレスポンス

[ "MCA:

JSONArray arrayObj = new JSONArray(); 
arrayObj.put("MCA"); 
arrayObj.put("Amit Kumar"); 
arrayObj.put("19-12-1986"); 
arrayObj.put(24); 
arrayObj.put("Scored"); 
arrayObj.put(new Double(66.67)); 
PrintWriter out = response.getWriter(); 
out.println(arrayObj); 

がどのように見えるのブラウザでページをプリントアウトしますが」、 "アミット・クマール"、 "19-12-1986"、24は、 "" 得点、66.67]

私はそのような

などのより複雑な、ツリー状のデータ構造を生成できるようにする必要があります
[{ 
task:'Project: Shopping', 
duration:13.25, 
user:'Tommy Maintz', 
iconCls:'task-folder', 
expanded: true, 
children:[{ 
    task:'Housewares', 
    duration:1.25, 
    user:'Tommy Maintz', 
    iconCls:'task-folder', 
    children:[{ 
     task:'Kitchen supplies', 
     duration:0.25, 
     user:'Tommy Maintz', 
     leaf:true, 
     iconCls:'task' 
    },{ 
     task:'Groceries', 
     duration:.4, 
     user:'Tommy Maintz', 
     leaf:true, 
     iconCls:'task' 
    },{ 
     task:'Cleaning supplies', 
     duration:.4, 
     user:'Tommy Maintz', 
     leaf:true, 
     iconCls:'task' 
    },{ 
     task: 'Office supplies', 
     duration: .2, 
     user: 'Tommy Maintz', 
     leaf: true, 
     iconCls: 'task' 
    }] 
}, { 
    task:'Remodeling', 
    duration:12, 
    user:'Tommy Maintz', 
    iconCls:'task-folder', 
    expanded: true, 
    children:[{ 
     task:'Retile kitchen', 
     duration:6.5, 
     user:'Tommy Maintz', 
     leaf:true, 
     iconCls:'task' 
    },{ 

私はこのツリー状のJSONレスポンスを生成するために使用できるAPIはどれですか?具体的には、拡張ノード、子ノード、葉ノードの作成を処理するために使用できるものがあるかどうかは疑問です。

+0

既に、ツリー構造をよりよくサポートする他のAPIがあります。例えば。ジャクソン(http://wiki.fasterxml.com/JacksonHome)またはGson(http://sites.google.com/site/gson/gson-user-guide)。 – proko

答えて

2

JSONObjectを使用して、JSONArraysやその他のJSONObjectを含む任意の値のキーマップを作成します。

0

を、あなたは、オブジェクトのあなたのツリーを組み立て、ルートノードにtoJSONを呼び出すことができます。これにより、「平らな」メンバーが作成され、サブタスクtoJSON()の結果が呼び出されて「子」JSONArrayが作成されます。

基本的なツリー再帰です。もちろん、あなたのデータがまだそのように構成されていない場合、これはあまり役に立ちません。

public interface JSONThing { 
    public JSONObject toJSON(); 
} 
関連する問題