2012-05-14 17 views
0

javaでjsonを作成する際に問題が発生しています。以下は私がJavaコードを通して作成しなければならないJSONです。Javaでネストされたjsonを作成する方法

{"status":"0", 
"Response":{ 
    "abc":[ 
     "def":[ 
      "fgh":[ 
       { 
        "abc":"abc", 
        "def":"abc", 
        "ghi":"abc", 

       }, 
       { 
        "abc":"abc", 
        "def":"abc", 
        "ghi":"abc", 

       }, 
       { 
        "abc":"abc", 
        "def":"abc", 
        "ghi":"abc", 

       } 
        ], 
      "ghi":[ 
       { 
        "abc":"abc", 
        "def":"abc", 
        "ghi":"abc", 

       }, 
       { 
        "abc":"abc", 
        "def":"abc", 
        "ghi":"abc", 

       }, 
       { 
        "abc":"abc", 
        "def":"abc", 
        "ghi":"abc", 

       } 
        ] 
      ] 
     ] 
    ] 
} 
} 

ここにJavaコードがあります。

JSONObject result = new JSONObject(); 
    JSONObject abcObject = new JSONObject(); 
    JSONArray resultArray = new JSONArray(); 
    JSONArray fghArray = new JSONArray(); 
    JSONArray defArray = new JSONArray(); 
    JSONArray abcArray = new JSONArray(); 

abcObject.put("abc"); 
abcObject.put("def"); 
abcObject.put("ghi"); 
fghArray.add(abcObject); 
defArray.add(fghArray); 
abcArray.add(defArray); 
result.put("status", 0); 
result.put("Response",abcArray); 
return resultJson.toString(); 

問題:

私はJSPにJSONを送り返します。出力は表示されません。

success:function(data) { 
      alert(data); 
      var json = $.toJSON(data); 
      alert(json); 
     }, 

警告(データ)はオブジェクトに警告しており、第2の警告アラート(json)は何も表示していません。

+1

問題は何ですか?より具体的にしてください。 –

+1

これは有効なJSONではありません。 (あなたの最も内側の "オブジェクト"は、オブジェクトリテラル構文の中括弧を、配列リテラルのカンマ区切り値構文と混在させます。他のプロパティのいくつかは逆です。つまり、配列リテラル構文の角括弧を 'property:value 'オブジェクトリテラルの構文です。) – nnnnnn

+0

Aleksandr私は質問を編集しました。 –

答えて

1

JSONオブジェクトの構文に誤りがあります:オブジェクトにフィールドと値のペアのリストが含まれ、中括弧{}で囲まれている必要があります。配列は山括弧[]で囲まれた値のリストです。

+0

まだ有効ではありませんjson –

0

例JSONは

[ 
     { 
      "key1":"value", 
      "key2":"value2" 
     }, 
     { 
      "key1":"value", 
      "key2":"value2" 
     } 
     ] 

あなたが持つことができません

{ 
     "key1":"value", 
     "key2":"value2" 
    } 

A JSON配列のようにする必要があり、それを

A JSONオブジェクトを更新してください間違っている

//Wrong Array format (Array should be list of Objects) 
    [ 
     "key1": "value", 
     "key2": "value2" 
    ] 

とwあなたはここで、iは、JSONオブジェクトに上記のJSON配列を変更しているあなたの上記の例でペアを使用しているので鶏あなたの巣、彼らが

{"key1": "value1", 
     "key2": [ 
      { 
       "key1": "value", 
       "key2": "value2" 
      }, 
      { 
       "key1": "value", 
       "key2": "value2" 
      } 
     ], 
     "key3": [ 
      { 
       "key1": "value", 
       "key2": "value2" 
      }, 
      { 
       "key1": "value", 
       "key2": "value2" 
      } 
     ] 
    } 

ようにする必要があり 新しいサンプルJSONがある

{ 
     "status": "0", 
     "Response": { 
      "abc": { 
       "def": { 
        "fgh": [ 
         { 
          "abc": "abc", 
          "def": "abc", 
          "ghi": "abc" 
         }, 
         { 
          "abc": "abc", 
          "def": "abc", 
          "ghi": "abc" 
         }, 
         { 
          "abc": "abc", 
          "def": "abc", 
          "ghi": "abc" 
         } 
        ], 
        "ghi": [ 
         { 
          "abc": "abc", 
          "def": "abc", 
          "ghi": "abc" 
         }, 
         { 
          "abc": "abc", 
          "def": "abc", 
          "ghi": "abc" 
         }, 
         { 
          "abc": "abc", 
          "def": "abc", 
          "ghi": "abc" 
         } 
        ] 
       } 
      } 
     } 
    } 

そして、上記のJSONオブジェクトを作成するためのJavaコード

 import org.codehaus.jettison.json.JSONArray; 
     import org.codehaus.jettison.json.JSONException; 
     import org.codehaus.jettison.json.JSONObject; 
     public static String createJson() { 
      JSONObject result = new JSONObject(); 
      JSONObject response = new JSONObject(); 
      JSONObject abc = new JSONObject(); 
      JSONObject def = new JSONObject(); 
      JSONArray fgh = new JSONArray(); 
      JSONArray ghi = new JSONArray(); 
      JSONObject sampleInnerElement = new JSONObject(); 
      try { 
       sampleInnerElement.put("abc","abc"); 
       sampleInnerElement.put("def","abc"); 
       sampleInnerElement.put("ghi","abc"); 
       //populating the fgh Array 
       fgh.put(sampleInnerElement); 
       fgh.put(sampleInnerElement); 
       fgh.put(sampleInnerElement); 
       //populating the Ghi Array 
       ghi.put(sampleInnerElement); 
       ghi.put(sampleInnerElement); 
       ghi.put(sampleInnerElement); 

       def.put("fgh",fgh); 
       def.put("ghi",ghi); 
       abc.put("def",def); 
       response.put("abc",abc); 
       result.put("status","0"); 
       result.put("response",response); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
      return result.toString(); 
     } 
関連する問題