Java 将JSON服务器响应解析为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 这

我正在使用Java解析来自服务器的JSON响应。我的最终目标是将结果中的数据放在一个数组中。目前,我正在使用此功能尝试获得结果:

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
}