改造 - JSON 数组解析

Posted

技术标签:

【中文标题】改造 - JSON 数组解析【英文标题】:Retrofit - JSON Array Parsing 【发布时间】:2016-04-27 12:06:24 【问题描述】:

我正在使用 Retrofit 解析 JSON Array,其中 JSON 数组如下所示:

"hobbies": [ "Music", "Reading"]

这是我的JSON 的样子:


    "type":"success",
    "value":[
        
            "id":1,
            "title":"Title - 1",
         "name":
            "first":"First - 1",
            "last":"Last - 1"
         ,
            "hobbies":[
                "Writing Code - 1",
            "Listening Music - 1"
            ]
        ,
       .....
    ]

Value.java

private List<String> hobbies = new ArrayList<String>();

Adapter.java

viewHolder.hobbies.setText(value.getHobbies().toString());

当我运行我的程序时,我是getting data,如下所示:

[Music, Reading]

所以,问题Why我得到[]以及输出。

Value.java

public class Value 

    @SerializedName("id")
    @Expose
    private Integer id;

    @SerializedName("title")
    @Expose
    private String title;

    @SerializedName("hobbies")
    @Expose
    private List<String> hobbies = new ArrayList<String>();

    @SerializedName("name")
    @Expose
    private Name name;

    .....

    public List<String> getHobbies() 
        return hobbies;
    

    public void setHobbies(List<String> hobbies) 
        this.hobbies = hobbies;
    

Service.java

public interface Service 

   @GET("/demo_retrofit.json")
   Observable<Master> getMaster();

【问题讨论】:

使用jsonschema2pojo.org将你的json转换成pojo @JacksonChengalai 是对的 但我的问题是为什么我在输出中得到 [] @Oreo 其实value.getHobbies(); 直接返回一个List[ ]。更好的iterate 它并使用StringBuilder 显示 @MD 请把它作为你的答案发布,然后我会接受那个。 【参考方案1】:

其实value.getHobbies();直接返回一个List[ ]。更好的iterate 它并使用StringBuilder 显示

【讨论】:

【参考方案2】:

MD 和杰克逊是对的。 Object.toString() 方法返回一个“以文本形式表示”该对象的字符串。因此,对于您的情况,爱好是一个数组列表,因此文本表示将带有[]。 ;)

编辑:

您可能希望为此使用 for 循环:

for (String hobby : hobbies) 
    // Do something with hobby here

【讨论】:

谢谢,我已经完成了这个,但很抱歉这次会接受@MD的回答,因为他首先向我展示了获得它的方法.. :) 但我认为你的回答很有用,我也用于每个循环... 尝试使用 StringBuilder,stringBuilder.append(value) 将您的值连接在一起。那么只有你做learningTV.setText(stringBuilder.toString()); 你好,伙计。看看这个:***.com/questions/35522662/…

以上是关于改造 - JSON 数组解析的主要内容,如果未能解决你的问题,请参考以下文章

使用 Android 改造解析动态键 JSON 数组

如何通过改造将数组嵌套对象 Json 解析为 Kotlin?

如何解析具有相同键的不同数据类型的改造对象的json数组

在通过改造获取对象数组时,错误无法解析方法

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

ArrayList<String> 使用改造 android 解析成 recyclerview