在没有包含数组的情况下迭代Java jsonObjects

时间:2016-09-21 14:22:11

标签: android json jsonobject

我的问题是,这将创建3个DailyJobObjects的新实例,其值与对象编号1(01,Bill,50)相同。这样做是合乎逻辑的,那么如何迭代我的jsonObject以便将三个对象分开呢?我已经不知疲倦地查看了这个内容,但是我所看到的所有东西都包含在jsonData中并且数组包含在内,这会让事情变得更容易但是这个响应Body直接来自数据库 - 没有数组,只有背靠背的对象。迭代只给了我一些键,我已经用一个单独的方法给了我一半的地图。现在我需要价值观。你不必给我答案,你可以(我宁愿)指出我缺少的东西。谢谢!

{"id":"01","name":"Bill","salary":"50"},
{"id":"02","name":"James","salary":"60"},
{"id":"03","name":"Ethan","salary":"70"}

JSONObject fields = new JSONObject(jsonData);

    mObjectArray = new DailyJobObjectArray[fields.length()];

    for(int i=0; i< fields.length(); i++) {
        DailyJobObject mObject = new DailyJobObject();

        mObject.setName(fields.getString("name"));
        mObject.setSalary(fields.getString("salary"));

        mObjectArray[i] = mObject;
    }
    return mObjectArray;

1 个答案:

答案 0 :(得分:0)

正如@Selvin所说,你的json无效。从数据库中获取正确的json或以非标准方式解析它。我建议从DB中获取一个合适的json数组。

    String[] splitString = jsondata.split("[^a-zA-Z \\{\\}]+(?![^\\{]*\\})");
    for ( String s : splitString) {
        try {
            JSONObject field = new JSONObject(s);
            String name = field.getString("name");
            String id = field.getString("id");
        } catch (JSONException e) {
            e.printStackTrace();
        }

    }

我也同意你的mObject(...)没有任何意义

也许你正在寻找类似这样的东西

 mObject.setName(name)