我正面临代码的某种问题。以下是我生成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");
}
答案 0 :(得分:0)
只有一个条目,您的代码不会创建JSONArray。但是,您的解析代码总是需要这个数组。
答案 1 :(得分:0)
在解析json代码中,
您将数据作为 json数组获取。这就是为什么第一个是Ok [数据是 json数组]和第二个[数据是json对象]不行。
为了避免这种情况,你应该使用相同的格式来生成json数据,就像第二个那样
{"data":[{"FieldType":"Character","FieldName":"ffg","Id":0}]}
答案 2 :(得分: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();
}