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としてエントリが1つしかない場合は、次のようになります。

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

2番目の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

エントリが1つしかない場合、コードはJSONArrayを作成しません。ただし、解析コードは常にこの配列を想定しています。

于 2012-10-02T10:41:50.900 に答える
0

jsonコードの解析では、

json配列としてデータを取得します。そのため、最初のものはOk [データはjson配列]であり、2番目のもの[データはjsonオブジェクト]はOKではありません。

これを回避するために、jsonデータを生成するために2番目のものと同じ形式を使用する必要があります

{"data":[{"FieldType":"Character","FieldName":"ffg","Id":0}]}
于 2012-10-02T10:46:12.953 に答える
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 に答える