Java 将JSON服务器响应解析为JSON数组
我正在使用Java解析来自服务器的JSON响应。我的最终目标是将结果中的数据放在一个数组中。目前,我正在使用此功能尝试获得结果:Java 将JSON服务器响应解析为JSON数组,java,json,arrays,Java,Json,Arrays,我正在使用Java解析来自服务器的JSON响应。我的最终目标是将结果中的数据放在一个数组中。目前,我正在使用此功能尝试获得结果: JSONArray jArray = myResponse.getJSONArray("results"); 此代码失败,因为它正在查找对象数组,而不是字符串数组: org.json.JSONException: Value blah at 0 of type java.lang.String cannot be converted to JSONObject 这
JSONArray jArray = myResponse.getJSONArray("results");
此代码失败,因为它正在查找对象数组,而不是字符串数组:
org.json.JSONException: Value blah at 0 of type java.lang.String cannot be converted to JSONObject
这是我的服务器的JSON响应:
{
status: "OK",
results: [
"blah",
"bleh",
"blah"
]
}
有没有一种简单的方法可以将“results”值放入数组中?或者我应该编写自己的解析器
谢谢
----------更新----------
看起来我的问题实际上发生在其他地方,而不是JSON属性“results”被转换成JSONArray的地方
对不起,谢谢你的回答,他们让我意识到我找错了地方。应该是这样。因此,您可能试图在结果中获取JSONObject而不是字符串
JSONObject responseObject = new JSONObject(responseString);
JSONArray resultsArray = responseObject.getJSONArray("results");
for (int i=0; i<resultsArray.length(); i++)
String resultString = resultsArray.getString(i);
JSONObject responseObject=新的JSONObject(responseString);
JSONArray resultsArray=responseObject.getJSONArray(“结果”);
对于(inti=0;i应该就是这样。因此,您可能试图在结果中获取JSONObject而不是字符串
JSONObject responseObject = new JSONObject(responseString);
JSONArray resultsArray = responseObject.getJSONArray("results");
for (int i=0; i<resultsArray.length(); i++)
String resultString = resultsArray.getString(i);
JSONObject responseObject=新的JSONObject(responseString);
JSONArray resultsArray=responseObject.getJSONArray(“结果”);
对于(int i=0;i,由于您可能拥有比仅String[]result
更多的属性,我建议定义如下:
public class Dto {
//of course you should have private fields and public setters/getters, but this is only a sample
public String status;
public List<String> results;//this can be also an array
}
由于您可能会有更多的属性,而不仅仅是String[]result
,因此我建议您这样定义:
public class Dto {
//of course you should have private fields and public setters/getters, but this is only a sample
public String status;
public List<String> results;//this can be also an array
}