2016-09-21 58 views
-1

我的问题是这将创建3个与对象编号1(01,Bill,50)相同的值的DailyJobObjects的新实例。这是合乎逻辑的,所以我怎样才能遍历我的jsonObject,这样我就可以分开这三个对象?我孜孜不倦地看着这个,但是我看到的所有东西都有,并且数组包含在jsonData中,这会让事情变得更容易,但是这个响应Body直接来自数据库 - 没有数组,只是背对背的对象。迭代只给我一个我已经在一个单独的方法中做的键,给我一半的地图。现在我需要这些值。你不必给我一个答案,你可以(我宁愿)指出我错过的东西。谢谢!迭代通过没有包含数组的Java jsonObjects

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

1.您的JSON是无效,2.'DailyJobObject mObject = new DailyJobObject();'amd then'mObject(...)'不会在java中产生敏感性 – Selvin

+0

@Selvin程序运行时,与json有关。这没有问题。我只是复制并粘贴了我的Android监视器中的json。 DailyJobObject是我创建的一个自定义类。 – Addy75

+0

对不起,我刚刚编辑。错过了复制和粘贴的一些内容。 – Addy75

回答

0

正如@Selvin所提到的,您的json无效。从数据库中获取正确的json或者以非标准的方式解析它。我会建议从数据库中获取正确的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) 
+0

是的,我很抱歉,当我复制并粘贴时,我忘记了我的对象方法。我刚刚编辑。另外我假设从显示器复制的Json仍然具有程序在运行时添加的转义字符。我刚刚编辑过,请看一下,让我知道我的帖子现在是否更清晰。谢谢。 – Addy75