如何正确地将此String转换为jsonArray?
{
"myArray": [
{ "id": 1,
"att1": 14.2,
"att2": false },
{ "id": 2,
"att1": 13.2,
"att2": false },
{ "id": 3,
"att1": 13,
"att2": false }
]}
JSONArray jArray = new JSONArray(STRING_FROM_ABOVE);
导致jArray.length = 1
这是我第一次与json取得联系:)
答案 0 :(得分:10)
试试这个:
JSONObject jObject = new JSONObject(STRING_FROM_ABOVE);
JSONArray jArray = jObject.getJSONArray("myArray");
“string_from_above”不是Json数组,它是一个Json对象,包含一个属性(myArray),它是一个Json数组;)
然后你可以这样做:
for (int i = 0; i < jArray.length(); i++) {
JSONObject jObj = jArray.getJSONObject(i);
System.out.println(i + " id : " + jObj.getInt("id"));
System.out.println(i + " att1 : " + jObj.getDouble("att1"));
System.out.println(i + " att2 : " + jObj.getBoolean("att2"));
}
答案 1 :(得分:2)
在解析时,将值添加到对象和ArrayLists,或者以您希望的方式使用它。祝好运。
JSONObject jo = new JSONObject(STRING_FROM_ABOVE);
JSONArray rootArray= jo.getJSONArray("myArray");
int rootArrayLength=rootArray.length();
for(int i=0;i<rootArrayLength;i++){
int id= rootArray.getJSONObject(i).getInt("id");
// do same for others too and create an object
}
// create object and make a list
答案 2 :(得分:1)
在这里混合使用另一种方法,我建议您查看Gson。 Gson是一个库,可以快速地从Java对象进行序列化和反序列化。例如,使用您的字符串,您可以这样做:
// Declare these somewhere that is on the classpath
public class ArrayItem{
public int id;
public double att1;
public boolean att2;
}
public class Container{
public List<ArrayItem> myArray;
}
// In your code
Gson gson = new Gson();
Container container = gson.fromJson(json, Container.class);
for(ArrayItem item : container.myArray){
System.out.println(item.id); // 1, 2, 3
System.out.println(item.att1); // 14.2, 13.2, 13.0
System.out.println(item.att2); // false, false, false
}
同样,你也可以很容易地倒退。
String jsonString = gson.toJson(container);
// jsonString no contains something like this:
// {"myArray":[{"id":1,"att1":14.2,"att2":false},{"id":2,"att1":13.2,"att2":false},{"id":3,"att1":13.0,"att2":false}]}
使用像Gson这样的东西的主要好处是,您现在可以默认使用所有Java类型检查,而不必自己管理属性名称和类型。它还允许您执行一些奇特的操作,例如复制类型层次结构,这使得管理大量json消息变得轻而易举。它适用于Android,并且jar本身很小,并且不需要任何其他依赖。
答案 3 :(得分:0)
看一下JQuery,特别是Parse函数。这将直接将Json数组解析为Object。