我使用Java解析来自服务器的JSON响应。我的最终目标是在Array中获得来自结果的数据。目前,我正在使用它来尝试获得结果:
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"
]
}是否有一种将“结果”值输入数组的简单方法?或者我应该写我自己的解析器。
谢谢
看起来我的问题实际上发生在其他地方,而不是JSON属性“结果”被转换为JSONArray的地方。
抱歉,谢谢你的回答,他们帮我意识到我找错地方了。
发布于 2013-07-26 14:20:41
应该是这样的。因此,您可能试图在结果数组中获取JSONObject而不是字符串。
JSONObject responseObject = new JSONObject(responseString);
JSONArray resultsArray = responseObject.getJSONArray("results");
for (int i=0; i<resultsArray.length(); i++)
String resultString = resultsArray.getString(i);发布于 2013-07-26 15:37:01
由于您可能拥有更多的属性,而不仅仅是String[] result,我建议像这样定义一个DTO:
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
}然后在你的代码中:
ObjectMapper mapper = new ObjectMapper();
Dto dto = mapper.readValue(inputDtoJson, Dto.class);//now in dto you have all the properties you needhttps://stackoverflow.com/questions/17883714
复制相似问题