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



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

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

上述 URL 的输出类似于" {"to": "INR", "rate": 64.806700000000006, "from": "USD"} "。我假设它是 JSON 对象。如何获得 64 的值,我应该通过解析来获得它吗?

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

答:是的。

建议:

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

有许多库支持此功能,包括:

  • JSONOjbect (Android(

  • 格森

  • 杰克逊

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

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

如其他答案中所述,有很多选项可以反序列化 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 实例并在所有线程之间共享它。

相关内容

最新更新