0

嗨,我正面临着某种代码问题。以下是我生成 json 数据的代码

for(int i=0; i < allEds.size(); i++){
                String edsText = allEds.get(i).getText().toString();                                           
               //spinner = allSpns.get(i);
               String spinSelected=allSpns.get(i).getSelectedItem().toString();                  
               try
                {
                   JSONObject json = new JSONObject();          
                   json.put("FieldName", edsText);
                   json.put("FieldType",spinSelected);
                   parent.accumulate("data", json);



                }
                catch (JSONException e)
                {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }                   

            }

如果我对 json 进行了多个条目,它工作正常并且得到

correct out put
{"data":[{"FieldType":"Character","FieldName":"fffg"},{"FieldType":"Character","FieldName":"fg"]}

当只有一个作为 json 的条目时,它会给出以下内容

{"data":{"FieldType":"Character","FieldName":"ffg","Id":0}}

在解析第二个 json 时出现错误。我的代码有什么问题吗?

我用于解析 json 的代码

JSONObject jsonObj = new JSONObject(folderStructure);
        JSONArray data = jsonObj.getJSONArray("data");
         //ArrayList<HashMap<String, String>> folderList = new ArrayList<HashMap<String, String>>();
        for(int i=0; i<data.length(); i++)
        {

            //HashMap<String, String> map = new HashMap<String, String>();
             JSONObject obj=data.getJSONObject(i);
             String id = obj.getString("Id"); 
                String valueName = obj.getString("FieldName"); 
                String valueType = obj.getString("FieldType"); 
}
4

3 回答 3

0
JSONObject parent = new JSONObject();
JSONArray jdata = new JSONArray();

    try{
         for(int i=0; i < allEds.size(); i++){
             JSONObject childObj = new JSONObject();         
             childObj .put("FieldName", allEds.get(i).getText().toString());
             childObj .put("FieldType",allSpns.get(i).getSelectedItem().toString());

             jdata .put(childObj).toString();
            }
          parent.put("data",jdata);
       }
       catch (JSONException e){
         // TODO Auto-generated catch block
         e.printStackTrace();
       }
于 2012-10-03T06:18:09.173 回答
0

只有一个条目,您的代码不会创建 JSONArray。但是,您的解析代码总是需要这个数组。

于 2012-10-02T10:41:50.900 回答
0

在您解析 json 代码中,

你得到数据作为json 数组。这就是为什么第一个是 Ok[data is json array] 而第二个 [data is json object] 是不OK的。

为了避免这种情况,您应该使用与第二个相同的格式来生成 json 数据

{"data":[{"FieldType":"Character","FieldName":"ffg","Id":0}]}
于 2012-10-02T10:46:12.953 回答