我正在和Gson一起使用Retrofit,我有一个Json对象喜欢这样:&#34;费用&#34;:[[0,0.26],[50000,0.24],[100000,0.22]] < /强> 如何使用Gson将其反序列化为元组数组。有点喜欢这个。
public class MyClass{
public List<MyTuple> Fees;
}
public class MyTuple{
public int volume;
public double percentFee;
}
答案 0 :(得分:1)
创建自定义Gson反序列化器解决了我的问题。这是代码:
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(MyTuple.class, new MyTupleDeserializer());
Gson gson = gsonBuilder.create();
MyClass myClass= gson.fromJson(json, MyClass.class);
以下是MyTupleDeserializer类的代码
private class MyTupleDeserializer implements JsonDeserializer<MyTuple> {
@Override
public MyTuple deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
JsonArray tupleValues= json.getAsJsonArray();
MyTuple myTuple= new MyTuple();
myTuple.setVolume(tupleValues.get(0).getAsInt());
myTuple.setPercentFee(tupleValues.get(1).getAsDouble());
return myTuple;
}
}
答案 1 :(得分:0)
首先注意:如果我们像下面这样定义MyClass
会更好。使用小'f'而不是'F'
public MyClass {
public List<MyTuple> fees;
}
以下代码可用于反序列化字符串
Gson gson = new Gson();
MyClass myClass = gson.fromJson(jsonString, MyClass.class);