如何反序列化此JSON类型

时间:2014-06-27 10:59:33

标签: java json gson

我有一个看起来像这样的JSON:

{
    "results": {
        "exchange": [
            "site.com",
            {
                "currency": "usd",
                "last_traded": "2015.24"
            }
        ]
    }
}

如何获得last_traded值?

我为此写了一些POJO,但我似乎找不到在exchange数组中获取键值的方法。

public class ExchangeContainer {

    @Expose
    private Results results;

    public Results getResults() {
        return results;
    }

    public void setResults(Results results) {
        this.results = results;
    }

    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this);
    }

}

public class Results {

    @Expose
    private List<String> exchange = new ArrayList<String>();

    public List<String> getExchange() {
        return exchange;
    }

    public void setExchange(List<String> exchange) {
        this.exchange = exchange;
    }

    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this);
    }
}

我正在使用GSON反序列化此JSON。

所以为了让我遍历模型是:

ExchangeContainer response;

String rate = response.getResults().getExchange().get(1); // how to continue?

我被困住了。

2 个答案:

答案 0 :(得分:0)

使用班级中的implements JsonDeserializer实施界面

并覆盖deserialize方法。

示例链接 - http://www.javacreed.com/gson-deserialiser-example/

答案 1 :(得分:0)

创建创建的字符串列表

private List<String> exchange = new ArrayList<String>();

&安培; 在创建列表中设置另一个列表,即在交换

public void setExchange(List<String> exchange)

通过调用行

获得价值
String rate = response.getResults().getExchange().get(1);

它包含"last_traded": "2015.24"是不是?

现在获取 2015.24,您有以下选择: -

  1. 字符串[]拆分(“:”)

  2. String substring(int beginIndex)

  3. 我希望这能解决你的问题。