使用Gson简单的JSONObject(或JSONArray)反序列化的最佳方法是什么,但是“ value”属性可以是整数,布尔值或字符串类型
a=1:10
b=11:20
c=21:30
Data=cbind(a,b,c)
Density3Dd <- kde3d(Data[,1], Data[,2], Data[,3], n = 3)
同班
df2 <- structure(list(A = 1:3, B = c(20L, 7L, 52L)), class = "data.frame",
row.names = c(NA,
-3L))
df1 <- structure(list(A = 1:6, B = c(15L, 20L, 13L, 7L, 52L, 78L)), class =
"data.frame", row.names = c(NA,
-6L))
正如Deadpool所建议的那样,我尝试了JsonPrimitive类型,但是每当我想从ViewPair获取这样的值时都会出错:
{"label":"Label", "value":56}
{"label":"Label", "value":false}
{"label":"Label", "value":"string value"}
答案 0 :(得分:4)
您可以将其解析为JsonPrimitive,因为它具有检查类型isBoolean,isNumber和isString的方法以及获取值的方法
public class ViewPair {
@SerializedName("label")
private String label;
@SerializedName("value")
private JsonPrimitive value;
}
这是我测试这三种情况的示例
ViewPair targetObject1 = new Gson().fromJson("{\"label\":\"Label\", \"value\":56}", ViewPair.class);
ViewPair targetObject2 = new Gson().fromJson("{\"label\":\"Label\", \"value\":false}", ViewPair.class);
ViewPair targetObject3 = new Gson().fromJson("{\"label\":\"Label\", \"value\":\"string value\"}", ViewPair.class);
从JsonObject
可以直接获得JsonPrimitive
JsonPrimitive object = item.getAsJsonPrimitive("value");
然后从JsonPrimitive
中获取所需类型的值
object.getAsString()
object.getAsInt()
object.getAsBoolean()