我正在尝试使用以下 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 实例并在所有线程之间共享它。