如何将url输出(JSON)作为Java变量

时间:2017-04-02 23:40:43

标签: java json

我正在尝试使用以下JSON对象中的rate值作为我的变量。

网址为:http://rate-exchange-1.appspot.com/currency?from=USD&to=INR

上述网址的输出就像" {" to":" INR"," rate":64.806700000000006," from":" USD"}&# 34 ;.我假设它作为JSON对象。如何获得64的值,我应该通过解析得到它吗?

3 个答案:

答案 0 :(得分:1)

问:如何获得64的值,我应该通过解析得到它吗?

答:是的。

建议:

您也可以将其反序列化为Java对象。

有许多图书馆支持这一点,包括:

答案 1 :(得分:1)

您可以使用JSONObject将字符串转换为对象。

String responseString = "{'to': 'INR', 'rate': 64.806700000000006, 'from': 'USD'}";
JSONObject responseObject = new JSONObject(responseString);
Log.d("Response",responseObject.getString("rate")); //64.806700000000006

答案 2 :(得分:1)

如其他答案中所提到的,有很多选项可以反序列化JSON,大多数情况下定义相应的Java类然后进行序列化/反序列化会更好。使用Gson的一个示例实现是:

public class Main {
    public static void main(String[] args) {
        Gson gson = new Gson();
        String jsonString = "{\"to\": \"INR\", \"rate\": 64.806700000000006, \"from\": \"USD\"}";
        CurrencyRate currencyRate = gson.fromJson(jsonString, CurrencyRate.class);
    }

    class CurrencyRate {
        private String from;
        private String to;
        private BigDecimal rate;

        public String getFrom() {
            return from;
        }

        public void setFrom(String from) {
            this.from = from;
        }

        public String getTo() {
            return to;
        }

        public void setTo(String to) {
            this.to = to;
        }

        public BigDecimal getRate() {
            return rate;
        }

        public void setRate(BigDecimal rate) {
            this.rate = rate;
        }
    }
}

Gson是Thread Safe,所以只能初始化一个Gson实例并在所有线程中共享它。