Gil*_*iel 3 java android json android-studio
我不熟悉JSON所以如果我使用错误的术语,抱歉.
所以我有这个网址:
final String PRICE_TRY_URL = "https://api.coindesk.com/v1/bpi/currentprice/try.json";
Run Code Online (Sandbox Code Playgroud)
它返回如下内容:
格式化的JSON数据
{
"time":{ },
"disclaimer":"This data was produced from the CoinDesk Bitcoin Price Index (USD). Non-USD currency data converted using hourly conversion rate from openexchangerates.org",
"bpi":{
"USD":{
"code":"USD",
"rate":"6,911.7500",
"description":"United States Dollar",
"rate_float":6911.75
},
"TRY":{
"code":"TRY",
"rate":"35,738.0058",
"description":"Turkish Lira",
"rate_float":35738.0058
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想做的就是达到TRY的价格.我用下面的代码得到了这些数据.
public void doNetworking(){
AsyncHttpClient client=new AsyncHttpClient();
client.get(PRICE_TRY_URL, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
Log.d("BitcoinTracker","Succes in doNetworking");
// byte[] responseBody can be parsed to a json object.
parseJson(responseBody);
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
Log.e("BitcoinTracker", "Fail " + error.toString());
}
}
);
Run Code Online (Sandbox Code Playgroud)
这是我的方法:
public void parseJson(byte[] responseBody){
try {
JSONObject bitcoinJson =new JSONObject(new String(responseBody));
String currency= bitcoinJson.getString("bpi");
Log.d("bitcoinmanager",currency);
} catch (JSONException e) {
Log.d("BitcoinPrice","BitcoinPriceManager onSucces converting json from byte[] failed.");
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
如上所示,我使用以下语句:
String currency= bitcoinJson.getString("bpi");
Run Code Online (Sandbox Code Playgroud)
有了这个陈述,我无法达到目标点,即TRY的汇率.如何在JSON格式的文本中导航?
注意:我添加获取JSON数据部分以确保我的问题是明确的,希望它不是太多.
如果您使用的是Android,则无需使用任何外部功能:
JSONObject bitcoinJson = new JSONObject(responseBody);
JSONObject bpi = bitcoinJson.getJSONObject("bpi");
JSONObject tr = bpi.getJSONObject("TRY");
String rate = tr.getString("rate");
Run Code Online (Sandbox Code Playgroud)
使用该org.json.simple
库的原始答案,在问题被标记为Android之前:
JSONObject bitcoinJson = (JSONObject)new JSONParser().parse(new String(responseBody));
JSONObject bpi = (JSONObject)bitcoinJson.get("bpi");
JSONObject tr = (JSONObject)bpi.get("TRY");
String rate = (String)tr.get("rate");
Run Code Online (Sandbox Code Playgroud)
请注意,不是构造一个字符串来传递给它JSONParser
,而是让它Reader
直接访问它更有效.
归档时间: |
|
查看次数: |
612 次 |
最近记录: |