我正在制作一个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
可以是String
或List<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;
}
}