为了账号安全,请及时绑定邮箱和手机立即绑定

无法解析2D json数组并显示其内容

无法解析2D json数组并显示其内容

长风秋雁 2021-04-05 12:19:35
正在从API获取2d数组,正在解析响应。但是我无法获得这些价值。这就是得到回应的方式,DefaultHttpClient httpclient = new DefaultHttpClient(new BasicHttpParams());String api_uri = "http://192.168.0.106/api/something/";HttpGet httpget = new HttpGet(api_uri);httpget.setHeader("Content-type", "application/json");InputStream inputStream = null;String result = null;try { HttpResponse response = httpclient.execute(httpget); HttpEntity entity = response.getEntity(); inputStream = entity.getContent(); // json is UTF-8 by default BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) {  sb.append(line + "\n"); } result = sb.toString(); Log.e("rAct", result);} catch (Exception e) { // Oops Log.e("rActEr", e.toString());} finally { try {  if (inputStream != null) inputStream.close(); } catch (Exception squish) {}}该result字符串如下,[    [        {            "id": 138,            "name": "asdasd",            "person_image": "http://something.in:9090/photos/14/1575.jpg",            "person_description": "bla bla blaa",            "bla_id": 1,            "blabal_id": 2,            "other_id": 7,            "category": "asd"        }    ],    [        {            "id": 257,            "name": "asdasd",            "person_image": "http://something.in/asd.jpg",            "person_description": "asasdsad",            "bla_id": 1,            "blabal_id": 2,            "other_id": 7,            "category": "ASSSD"        }    ]]所以现在尝试读取数据,try {    jsonarray = new JSONArray(result);    for (int i = 0; i < jsonarray.length(); i++) {        jsonobject = jsonarray.getJSONObject(i);        Log.e("testt", jsonobject.toString());        ...        ...    }}catch....我不能够从该得到什么jsonobject 如何获得的name,person_image,person_description从结果数据。我试图让他们喜欢jsonobject.optString("name"),但什么也没回来。使用一维数组,我得到了响应,并且可以按照上面相同的方式读取数据。我需要修改什么才能读取所需的数据?
查看完整描述

2 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

由于您具有数组数组,请尝试读取json数组而不是外部数组内部的对象:


try {

jsonarray = new JSONArray(result);

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

    jsonarrayInner = jsonarray.getJSONArray(i);

    //you can do one more loop here

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

        jsonobject = jsonarrayInner.getJSONObject(i);

        Log.e("testt", jsonobject.toString());

    }

    ...

    ...

}

}catch....


查看完整回答
反对 回复 2021-04-28
?
GCT1015

TA贡献1827条经验 获得超4个赞

我更喜欢在这种情况下将Gson与POJO一起使用,它将json数组包装到java.util.List of <YourPojo>


List<MyPojo> myPojoList= new Gson().fromJson(jsonArray.toString(), new TypeToken<List<MyPojo>>() {

                }.getType());

并且您的pojo应该与您的json属性匹配


所以你的课应该是这样的


class MyPojo{

    private id;

    private String name ;

    private String person_image;

    private String person_description;

    private int bla_id;

    private int blabal_id;

    private int other_id;

    private String category;

}

这样,您将直接将json数组绑定到java对象


查看完整回答
反对 回复 2021-04-28
  • 2 回答
  • 0 关注
  • 144 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信