【问题标题】:Android JSON only OBJECT Fetching with IterationAndroid JSON only OBJECT Fetching with Iteration
【发布时间】:2019-03-20 08:26:53
【问题描述】:

我有一个仅包含对象的 json 文件,现在我无法通过迭代获取所有对象,因为这里没有数组。

这是代码:我在我的 android studio 和 JSon Data Screenshot 中尝试过

  @Override
    protected String doInBackground(String... strings) {
        try {
            url = new URL("https://api.myjson.com/bins/r7dj6");
            httpURLConnection = (HttpURLConnection) url.openConnection();
            httpURLConnection.connect();
            inputStream = httpURLConnection.getInputStream();

           bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
           String line =" ";

           while ((line = bufferedReader.readLine()) != null){
               stringBuffer.append(line);

           }

           String fullfile = stringBuffer.toString();

            JSONObject jsonObject = new JSONObject(fullfile);
            JSONObject jsonObjectchild = jsonObject.getJSONObject("Apartment");




        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }


        return null;
    }

【问题讨论】:

    标签: java android json parsing


    【解决方案1】:

    这是一个完整的例子。对我有用。

    HttpURLConnection connection = null;
    try {
        URL url = new URL("https://api.myjson.com/bins/r7dj6");
        connection = (HttpURLConnection) url.openConnection();
        connection.connect();
        InputStream inputStream = connection.getInputStream();
    
        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
        String line;
        StringBuilder stringBuffer = new StringBuilder();
        while ((line = reader.readLine()) != null){
            stringBuffer.append(line);
        }
    
        JSONObject jsonObject = new JSONObject(stringBuffer.toString());
        JSONObject apartmentObject = jsonObject.getJSONObject("Apartment");
        Iterator<String> keys = apartmentObject.keys();
        while (keys.hasNext()) {
            String flatName = keys.next();
            JSONObject flat = apartmentObject.getJSONObject(flatName);
            String age = flat.getString("age");
            String color = flat.getString("color");
            String name = flat.getString("name");
            String owner = flat.getString("owner");
            String partner = flat.getString("partner");
            Log.d("Flat", flatName + ": " + age + ", " + color + ", " + name + ", " + owner + ", " + partner);
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (connection != null) {
            connection.disconnect();
        }
    }
    

    【讨论】:

      【解决方案2】:

      你仍然可以迭代:

      for (Iterator key=jsonObjectchild.keys();key.hasNext();) {
          JSONObject flatName = json.get(key.next());
          ...
      }
      

      【讨论】:

      • for (Iterator key = jsonObjectchild.keys(); key.hasNext();) { JSONObject flatName = jsonObjectchild.getJSONObject(String.valueOf(key));字符串名称 = flatName.getString("name");字符串颜色 = flatName.getString("color"); }
      • 我尝试这样做但不工作
      • @Tasnuvaoshin 你在 String.valueOf() 中缺少 key.next()
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-19
      • 1970-01-01
      • 1970-01-01
      • 2018-01-14
      • 2011-01-20
      • 1970-01-01
      • 2022-12-02
      相关资源
      最近更新 更多