用Gson反序列化元组数组

时间:2016-10-20 07:08:22

标签: java json gson retrofit

我正在和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;
}

2 个答案:

答案 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);