2012-05-14 170 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(); 

问题:

当我的JSON发送回一个jsp。输出没有显示出来。

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

警报(数据)警报对象和第二警报警报(json)没有显示任何内容。

+1

问题是什么?请更具体。 –

+1

这不是有效的JSON。 (你的最里面的“对象”将对象字面值语法的大括号与数组文字的逗号分隔值语法混合在一起,其他一些属性则相反,即将数组字面值语法的方括号与'property:value '对象文字的语法。) – nnnnnn

+0

Aleksandr我已经编辑了这个问题。 –

回答

1

您的JSON对象的语法错误:对象必须包含字段/值对列表,并用大括号括起来{},数组是一个用尖括号[]括起来的值列表。

+0

它仍然是无效的json –

0

的实例JSON是错了,请更新

的JSON对象应该像

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

JSON数组

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

你不能有

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

和w ^母鸡嵌套他们,他们应该像

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

既然你在哪里使用在上面的例子中一对我已经改变了上面的JSON数组JSON对象 新样品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(); 
     }