【发布时间】:2026-01-03 15:40:01
【问题描述】:
使用 Gson 反序列化简单 JSONObject(或 JSONArray)但“值”属性可以是整数、布尔值或字符串类型的最佳方法是什么
{"label":"Label", "value":56}
{"label":"Label", "value":false}
{"label":"Label", "value":"string value"}
类
public class ViewPair {
@SerializedName("label")
private String label;
@SerializedName("value")
private <Unknown> value;
按照 Deadpool 的建议,我尝试了 JsonPrimitive 类型,但每当我想从 ViewPair 获取值时都会出错,如下所示:
Gson gson=new Gson();
List<ViewPair>data = gson.fromJson(array.toString(), listType);
JSONObject object = item.getJSONObject("value");
String spinnerLabel=object.getString("label");
JsonPrimitive spinnerValue=(JsonPrimitive) object.get("value");<-error
Caused by: java.lang.ClassCastException: java.lang.Boolean cannot be cast to com.google.gson.JsonPrimitive
【问题讨论】:
标签: java json gson deserialization