首页 > 解决方案 > 从节点 js API 获取 json 数据

问题描述

我用 nodejs 和 mongodb 创建了一个 API,我可以在其中获取和设置数据,但是我的 json 数组没有名称。我想将这些数据获取到我的 android 应用程序,我在网上找到了这个解决方案,但是它从一个名为“hits”的 json 数组中获取数据,有没有办法可以调整代码以适应数据库的格式,或者我可以添加我的 json 数组的名称,以便我可以使用相同的解决方案?

我找到的解决方案

        String url = "https://api.myjson.com/bins/12qqdf";

    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    try {
                        JSONArray jsonArray = response.getJSONArray("hits");

                        for (int i = 0; i < jsonArray.length(); i++) {
                            JSONObject hit = jsonArray.getJSONObject(i);

                            String address = hit.getString("address");
                            String longi = hit.getString("longitude");
                            String lat = hit.getString("latitude");

                            mExampleList.add(new ExampleItem(address, longi, lat));
                        }

                        mExampleAdapter = new ExampleAdapter(MainActivity.this, mExampleList);
                        mRecyclerView.setAdapter(mExampleAdapter);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();
        }
    });

    mRequestQueue.add(request);
}

我的数据库格式

[  
{  
  "_id":"5d66c8e2b957510ea064ccfa",
  "address":"Rruga - fdff",
  "latitude":34.343232,
  "longitude":12.322736,
  "__v":0
},
{  
  "_id":"5d66c8ebb957510ea064ccfb",
  "address":"Rruga - 111",
  "latitude":34.343232,
  "longitude":12.322736,
  "__v":0
},
{  
  "_id":"5d66c8f8b957510ea064ccfc",
  "address":"Rruga - 222",
  "latitude":32.343232,
  "longitude":22.322736,
  "__v":0
},
{  
  "_id":"5d66cb98c6e86132d46c2fed",
  "address":"Rruga - zzz",
  "latitude":34.343232,
  "longitude":12.322736,
  "__v":0
}
]

标签: androidnode.js

解决方案


根据您的 JSON 更改onResponse(JSONObject response)onResponse(JSONArray jsonArray)

最后删除下面的行。它应该工作

JSONArray jsonArray = response.getJSONArray("hits");

推荐阅读