JSON响应中的属性可以具有多种类型

我正在制作一个Android本机应用程序,该应用程序使用Retrofit2向WooCommerce API发出请求,并在GSON的帮助下获得将其与模型类(POJO)映射的JSON响应。我在Android Studio中使用了一个插件,该插件会根据JSON响应自动生成POJO。

将请求发送到WC API时,某些端点具有以下响应:

"meta_data": [
        {
            "id": 2881,"key": "wc_productdata_options","value": [
                {
                    "_bubble_new": "\"yes\"","_bubble_text": "معجون أسنان","_custom_tab_title": "معجون أسنان Oral-B","_custom_tab": "","_product_video": "","_product_video_size": "","_product_video_placement": "","_top_content": "","_bottom_content": ""
                }
            ]
        },{
            "id": 3077,"key": "_wp_page_template","value": "default"
        }
    ]

属性value可以是StringList<Value>,但POJO插件仅将value定义为List<Value> 因此,当解析响应时,当到达GSON expects BEGIN_ARRAY but got STRING instead时,我会得到一个错误"value" : "default"

如何表示value可以是模型类中的字符串或列表。

这是meta_data的自动生成的POJO

import com.google.gson.annotations.SerializedName;
import java.util.List;

public class MetaDatum {

@SerializedName("id")
private Long mId;
@SerializedName("key")
private String mKey;
@SerializedName("value")
private List<Value> mValue;

public Long getId() {
    return mId;
}

public void setId(Long id) {
    mId = id;
}

public String getKey() {
    return mKey;
}

public void setKey(String key) {
    mKey = key;
}

public List<Value> getvalue() {
    return mValue;
}

public void setvalue(List<Value> value) {
    mValue = value;
}

}
codyhcm 回答:JSON响应中的属性可以具有多种类型

我将value定义为Object类型,因此可以将其以某种方式转换为JSON中的内容。奏效了!

本文链接:https://www.f2er.com/2805020.html

大家都在问