【问题标题】:Parsing JSON array with a sub-array with GSON?使用 GSON 解析带有子数组的 JSON 数组?
【发布时间】:2012-03-13 15:44:18
【问题描述】:

假设我有一个 JSON 字符串,例如:

{"title":"aaa","url":"bbb","image":{"url":"ccc","width":"100","height":"200"}, ...

我的访问者:

import com.google.gson.annotations.SerializedName;

public class accessorClass {

    @SerializedName("title")
    private String title;

    @SerializedName("url")
    private String url;

    @SerializedName("image")
    private String image;

    // how do I place the sub-arrays for the image here?
    ...


    public final String get_title() {
        return this.title;
    }

    public final String get_url() {
        return this.url;
    }

    public final String get_image() {
        return this.image;
    }

    ...

}

还有我的主要:

            Gson gson = new Gson();
            JsonParser parser = new JsonParser();
            JsonArray Jarray = parser.parse(jstring).getAsJsonArray();

            ArrayList<accessorClass > aens = new ArrayList<accessorClass >();

            for(JsonElement obj : Jarray )
            {
                accessorClass ens = gson.fromJson( obj , accessorClass .class);
                aens.add(ens);
            }

您认为在此处获取图像的这些子数组的最佳方法是什么?

【问题讨论】:

    标签: java android json gson


    【解决方案1】:

    如果您的 JSON 是一个数组,仅供参考:{"results:":[{"title":"aaa","url":"bbb","image":{"url":"ccc","width":"100","height":"20...},{}]}

    那么你需要一个包装类:

    class WebServiceResult {
        public List<AccessorClass> results;
    }
    

    如果你的 JSON 不是这样格式化的,那么你创建的 For 循环就会这样做,(如果不是有点笨拙,如果你的 JSON 像上面那样形成会更好)。

    创建一个图像类

    class ImageClass {
        private String url;
        private int width;
        private int height;
    
        // Getters and setters
    }
    

    然后更改您的AccessorClass

        @SerializedName("image")
        private ImageClass image;
    
        // Getter and setter
    

    然后 GSON 传入的字符串

    Gson gson = new Gson();
    AccessorClass object = gson.fromJson(result, AccessorClass.class);
    

    工作完成。

    【讨论】:

    • 没问题.. 添加了更多内容来解释您的 json 应该如何格式化,但应该像您拥有的那样工作。 :)
    猜你喜欢
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多