如何使用动态密钥在改造中解析 json

Posted

技术标签:

【中文标题】如何使用动态密钥在改造中解析 json【英文标题】:How to parse json in retrofit with dynamic key 【发布时间】:2016-03-10 06:38:26 【问题描述】:

我有这个回应,我想使用改造来制作它的模型类。我知道如何为每个特定对象制作模型类,但不知道如何为第一个父数组制作模型类。

[3]
0:  
     user: 
            _id: "55e725b65656565d066037"
            photo: "https://graph.facebook.com/9884898989882/picture?height=300&width=300"
            provider: "facebook"
            username: "xyz"
           
        url:"abc.com"
    
1:  
     user: 
            _id: "55e725b65656565d066037"
            photo: "https://graph.facebook.com/9884898989882/picture?height=300&width=300"
            provider: "facebook"
            username: "xyz"
           
        url:"abc.com"
    
2:  
     user: 
            _id: "55e725b65656565d066037"
            photo: "https://graph.facebook.com/9884898989882/picture?height=300&width=300"
            provider: "facebook"
            username: "xyz"
           
        url:"abc.com"
    

【问题讨论】:

使用这个。将你的整个 json 响应源粘贴到其中,它会给你一个完整的模型类 jsonschema2pojo.org 【参考方案1】:

如果你的 json 看起来像:


    "0": 
        "user": 
            "_id": "55e725b65656565d066037",
            "photo": "https://graph.facebook.com/9884898989882/picture?height=300&width=300",
            "provider": "facebook",
            "username": "xyz"
        ,
        "url": "abc.com"
    ,
    "1": 
        "user": 
            "_id": "55e725b65656565d066037",
            "photo": "https://graph.facebook.com/9884898989882/picture?height=300&width=300",
            "provider": "facebook",
            "username": "xyz"
        ,
        "url": "abc.com"
    ,
    "2": 
        "user": 
            "_id": "55e725b65656565d066037",
            "photo": "https://graph.facebook.com/9884898989882/picture?height=300&width=300",
            "provider": "facebook",
            "username": "xyz"
        ,
        "url": "abc.com"
    

您可以为元素“0”、“1”等创建模型。

public class Element 

    private User user;

    private String url;

    public User getUser() 
        return user;
    

    public String getUrl() 
        return url;
    

    public static class User 

        @SerializedName("_id")
        private String id;

        private String photo;

        private String provider;

        private String username;

        public String getId() 
            return id;
        

        public String getPhoto() 
            return photo;
        

        public String getProvider() 
            return provider;
        

        public String getUsername() 
            return username;
        
    

最后你必须为*** json 级别创建 Map

Map<String, Element> elements;

你可以获得如下元素:

elements.get("0");

【讨论】:

以上是关于如何使用动态密钥在改造中解析 json的主要内容,如果未能解决你的问题,请参考以下文章

我如何使用改造和 recyclerView 解析 json 对象

使用改造的 JSON 解析

如何使用改造和 moshi 解析换行符分隔的 JSON?

如何在使用改造和 android jetpack 库时使用此动态 json 键创建数据类

如何使用改造和 gson 异步解析 json

如何使用改造[重复]将对象解析为json