简体   繁体   中英

Iterate through Java jsonObjects without array included

My problem is that this will create 3 new instances of DailyJobObjects with the same values as object number one (01, Bill, 50). And it's logical that it would do so, so how can I iterate through my jsonObject so I can separate the three objects? I have looked this up tirelessly but everything thing I have seen has and array included in the jsonData which would make things easier but this response Body is coming straight from a database - no arrays, just back to back objects. Iterating only gives me keys which I already did in a separate method to give me one half of my map. Now I need the values. You don't have to give me an answer, you can (I rather) point to something I'm missing. Thanks!

{"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;

As @Selvin has mentioned, your json is not valid. Either get proper json from the database or parse it in a non-standard way. I would suggest getting a proper json array from the DB.

    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();
        }

    }

I also agree that your mObject(...) does not make sense at all

Maybe you're looking for something like this

 mObject.setName(name)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM