我正在尝试使用以下JSON对象中的rate值作为我的变量。
网址为:http://rate-exchange-1.appspot.com/currency?from=USD&to=INR
上述网址的输出就像" {" to":" INR"," rate":64.806700000000006," from":" USD"}&# 34 ;.我假设它作为JSON对象。如何获得64的值,我应该通过解析得到它吗?
答案 0 :(得分:1)
答案 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实例并在所有线程中共享它。