这是JSON
{
"response": {
"data": {
"images": {
"image": [
{...
我要访问图像阵列。我想知道以下代码是否是最好的方法:
JSONObject jsonObjectResponse = new JSONObject(jsonString);
JSONObject jsonResponse = jsonObjectResponse.getJSONObject("response");
JSONObject jsonObjectData = new JSONObject(jsonResponse.toString());
JSONObject jsonData = jsonObjectData.getJSONObject("data");
JSONObject jsonObjectImages = new JSONObject(jsonData.toString());
JSONObject jsonImages = jsonObjectImages.getJSONObject("images");
JSONObject jsonObjectImage = new JSONObject(jsonImages.toString());
JSONArray jsonImageArray = jsonObjectImage.getJSONArray("image");
我觉得这需要很长时间才能完成一个简单的任务。有谁有一个更“精心设计”的解决方案? 非常感谢!
答案 0 :(得分:1)
不,那不是最好的方法。您不断从JSONObject
转换为String
,然后再次回到JSONObject
。您应该可以:
JSONArray jsonImageArray = new JSONObject(jsonString)
.getJSONObject("response")
.getJSONObject("data")
.getJSONObject("images")
.getJSONArray("image");
即使您仅删除所有的toString
调用,它也会变得更加简洁(但我仍然喜欢上面的示例):
JSONObject jsonObjectResponse = new JSONObject(jsonString);
JSONObject jsonResponse = jsonObjectResponse.getJSONObject("response");
JSONObject jsonData = jsonResponse.getJSONObject("data");
JSONObject jsonImages = jsonData.getJSONObject("images");
JSONArray jsonImageArray = jsonImages.getJSONArray("image");
答案 1 :(得分:1)
我认为您可以通过以下方式简单地组合所有这些语句:
JSONObject jsonObjectResponse = new JSONObject(jsonString);
JSONArray jsonImageArray = jsonObjectResponse.getJsonObject("data")
.getJsonObject("images")
.getJsonArray("image");
答案 2 :(得分:0)
您不能链接getJSONObject函数吗?
JSONObject jsonObjectResponse = new JSONObject("jsonString");
JSONObject jsonImages = jsonObjectResponse.getJSONObject("response").getJSONObject("data")....
答案 3 :(得分:0)
尝试以下操作:
JSONObject jsonObjectResponse = new JSONObject(jsonString);
JSONArray imageArray = jsonObjectResponse.getJSONObject("response")
.getJSONObject("data")
.getJSONObject("images")
.getJSONArray("image")
希望它能起作用。
答案 4 :(得分:0)
您可以用户链接呼叫:
String jsonString = "{\"response\":{\"data\":{\"images\":{\"image\":[]}}}}";
JSONObject json = new JSONObject(jsonString);
JSONArray image = json.getJSONObject("response")
.getJSONObject("data")
.getJSONObject("images")
.getJSONArray("image");
例如您的image
对象,例如{"title":"Some image","url":"http://..."}
,所以:
JSONObject firstImage = image.getJSONObject(0);
String url = firstImage.getString("url");
或者您可以使用GSON。您的课程:
class ServerAnswer {
private Response response;
// constructors, getters, setters
}
class Response {
private Data data;
// constructors, getters, setters
}
class Images {
@SerializedName("image")
private Image[] images;
// constructors, getters, setters
}
class Image {
private String url, title;
// constructors, getters, setters
}
然后解析:
ServerAnswer answer = new Gson().fromJson(jsonString, ServerAnswer.class);
Image[] images = answer.getResponse().getData().getImages().getImagesArray();
Image firstImage = images[0];
String url = firstImage.getUrl();
答案 5 :(得分:0)
在您的情况下:
public class Images {
@SerializedName("image")
public ArrayList<String> image;
}
public class Data {
@SerializedName("images")
public Images images;
}
public class Response {
@SerializedName("data")
public Data data;
}
public class MyData {
@SerializedName("response")
public Response response;
}
然后
MyData data = new Gson().fromJson(yourJsonString, MyData.class);
我认为这是最好的方法
答案 6 :(得分:0)
您可以尝试以下代码。
JSONArray jsonResponseArray = new JSONObject(strJson).getJSONObject("response").getJSONObject("data").getJSONObject("images").getJSONArray("image");
希望这会对您有所帮助。