【问题标题】:How can I parse JSON with comma in android?如何在android中用逗号解析JSON?
【发布时间】:2018-11-18 23:51:55
【问题描述】:

我正在尝试解析 JSON,但我的代码无法与一个 URL 一起使用,而它与其他 URL 一起使用。我认为这是有问题的昏迷,但我不确定,所以请查看我的代码并提供帮助。 我试图用循环中的点替换昏迷,但我得到的是 JSON 异常。当我更改 URL 时,也不例外。令人困惑... 这不起作用 URL:http://api.hnb.hr/tecajn/v1 这是我测试过的一个,它可以工作:https://newsapi.org/v2/top-headlines?country=us&category=business&apiKey=e402c76fc8584a1c81849179f1277a74 虽然更改了 URL,但我也更改了数据,所以这不是写作问题..我猜

这是我的昏迷替换代码:

 private String convertStreamToString(InputStream is) {
 BufferedReader reader = new BufferedReader(new 
InputStreamReader(is));
    StringBuilder sb = new StringBuilder();

    String line;
    try {
        while ((line = reader.readLine()) != null) {
            String coma = line.replaceFirst(",",".");
            sb.append(coma).append('\n');
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    return sb.toString();
}

而另一部分带有 URL 和 JSONArray:

    @Override
    protected Void doInBackground(Void... arg0) {
        URLconnection urlConn = new URLconnection();
        // Making a request to url and getting response
        String url = "http://api.hnb.hr/tecajn/v1";
        //.........connection.........
        String response = urlConn.makeServiceCall(url);

        Log.e(TAG, "Response from url: " + response);
        if (response != null) {
            try {
                JSONObject jsonObj = new JSONObject(response);

                // Getting JSON Array node
                arr = jsonObj.getJSONArray("values");

                for (int i = 0; i < article.length(); i++) {

                    JSONObject c = arr.getJSONObject(i);
                    header = c.getString("Valuta");

               }

            } catch (final JSONException e) {
                Log.e(TAG, "Json parsing error.");
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(getApplicationContext(),
                                "Json parsing error: 216",
                                Toast.LENGTH_LONG).show();
                    }
                });
            }

【问题讨论】:

  • sigh... 请使用支持 JSON 的 http 库。不要一遍又一遍地重新实现 HTTP 和 AsyncTask 的轮子/复制代码

标签: java android json


【解决方案1】:

逗号不是问题。这是第一个角色。一个是方括号,另一个是大括号。

因此,您需要将第一个响应解析为 Array 而不是 Object

new JSONArray(response);

话虽如此,因此您不能对两个 URL 使用相同的方法

【讨论】:

  • 之前没注意到..-.-
  • 不用担心。对于图书馆,您可以尝试 Retrofit 或 OkHttp。我认为这些是 Android 上更受欢迎的那些
  • 会试试的。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
  • 2016-10-24
  • 2014-05-10
  • 2012-06-18
  • 2021-09-06
相关资源
最近更新 更多