从JSON解析整数不起作用

时间:2017-02-02 01:43:38

标签: android json

我正在尝试在android studio中制作一个获取实时汇率的应用,所以我决定使用JSON来执行此操作。我目前能够将整个JSON打印为字符串,但我希望能够将TextView设置为美元转换率,但它无法正常工作。 TextView不会改变。任何帮助将不胜感激。

public class Converter extends AppCompatActivity {

TextView txtJson;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_converter);
    txtJson = (TextView) findViewById(R.id.tvJsonItem);
    new JsonTask().execute("https://openexchangerates.org/api/latest.json?app_id=870447ebb4d94379972250a3bdaed73f");
}
private class JsonTask extends AsyncTask<String, String, String> {
    protected String doInBackground(String... params) {
        HttpURLConnection connection = null;
        BufferedReader reader = null;
        try {
            URL url = new URL(params[0]);
            connection = (HttpURLConnection) url.openConnection();
            connection.connect();
            InputStream stream = connection.getInputStream();
            reader = new BufferedReader(new InputStreamReader(stream));
            StringBuffer buffer = new StringBuffer();
            String line = "";
            while ((line = reader.readLine()) != null) {
                buffer.append(line + "\n");
                Log.d("Response: ", "> " + line);   
            }
            return buffer.toString();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (connection != null) {
                connection.disconnect();
            }
            try {
                if (reader != null) {
                    reader.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
    @Override
    public void onPostExecute(String result) {
        super.onPostExecute(result);
        try {
            JSONObject jObject = new JSONObject(result);
            int USD = jObject.getInt("USD");
            String strUSD = Integer.toString(USD);
            txtJson.setText(strUSD);
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}}

2 个答案:

答案 0 :(得分:1)

您需要获取"USD"对象才能访问getJSONObject("rates").getDouble("USD")

此外,它不是整数。这是一个双重

export interface format{
 firstName : String;
}

答案 1 :(得分:0)

将您的onPostExecute更改为此:

@Override
public void onPostExecute(String result) {
    super.onPostExecute(result);
    try {
        JSONObject jObject = new JSONObject(result);
        // The line that follows
        double USD = jObject.getJSONObject("rates").getDouble("USD");
        String strUSD = Integer.toString(USD);
        txtJson.setText(strUSD);
    } catch (JSONException e) {
        e.printStackTrace();
    }
}