我有这个丑陋的JSON字符串,我需要获取totalStars
,在这种情况下为500。我尝试了很多解决方案,但似乎都没有用。
这是JSON
:
{
"code": 200,
"message": "success",
"data": [
[
{
"totalPosts": 42
}
],
[
{
"totalStars": 500
}
],
[
{
"followingCount": 1
}
],
[
{
"followerCount": 1
}
]
]
}
此刻,我正在尝试通过以下方式获取数据:
JSONObject jsonResult = new JSONObject(result);
JSONArray data = jsonResult.getJSONArray("data");
if(data != null) {
String[] names = new String[data.length()];
for(int i = 0 ; i < data.length() ; i++) {
names[i] = data.getString(i);
}
System.out.println(names);
}
JSONArray
数据包含正确的数据,但是我似乎无法从中获取其他数据。
答案 0 :(得分:2)
看起来您的数据是对象数组的数组,而不是字符串。您需要执行以下操作:
JSONObject jsonResult = new JSONObject(result);
JSONArray data = jsonResult.getJSONArray("data");
if(data != null) {
String[] names = new String[data.length()];
for(int i = 0 ; i < data.length() ; i++) {
JSONArray arr = data.getJSONArray(i);
dataObj = arr.getJSONObject(0)
Iterator<String> keys = dataObj.keys();
names[i] = dataObj.getString(keys.next())
}
System.out.println(names);
}
我可能在这个答案中有一些语法问题,但是主要的想法是,当您处理对象数组时,您试图获取一个字符串(每个数据索引都是一个对象数组。这样每个数组中只有一个对象)
答案 1 :(得分:0)
public class DataObject
{
private int code;
public int getCode() { return this.code; }
public void setCode(int code) { this.code = code; }
private String message;
public String getMessage() { return this.message; }
public void setMessage(String message) { this.message = message; }
private ArrayList<ArrayList<>> data;
public ArrayList<ArrayList<>> getData() { return this.data; }
public void setData(ArrayList<ArrayList<>> data) { this.data = data; }
}
使用与您的json对应的java对象从rest api进行解析。 使用gson或jackson库。