我今天在这个主题上搜索了很多。但是我找不到它,如何将JSONArray添加到JSONObject?
因为每次执行此操作都会收到此错误:Stackoverflow
JSONObject fillBadkamerFormaatFromContentlet(Structure structure, String formaat) { JSONObject jsonObject = new JSONObject(); JSONArray arr = new JSONArray(); BadkamerFormaat badkamerFormaat = new BadkamerFormaat(); BadkamerTegel badkamerTegel; List<Contentlet> contentlets = getContentletsByStructure(structure); badkamerFormaat.formaat = formaat; badkamerFormaat.tegels = new ArrayList<BadkamerTegel>(); try { jsonObject.put("formaat", formaat); } catch (JSONException e1) { throw new RuntimeException(e1); } for(Contentlet contentlet : contentlets) { badkamerTegel = new BadkamerTegel(); badkamerTegel.naam = contentlet.getStringProperty(ParameterNames.toolBetegelVeldNaam); try { badkamerTegel.afbeeldingTegel = contentlet.getBinary(ParameterNames.toolBetegelVeldTegelAfbeelding).getPath(); badkamerTegel.afbeeldingBadkamer = contentlet.getBinary(ParameterNames.toolBetegelVeldBadkamerAfbeelding).getCanonicalPath(); arr.put(badkamerTegel.toJSON()); } catch (IOException e) { throw new RuntimeException(e); } } try { jsonObject.put("aoColumnDefs",arr); } catch (JSONException e) { throw new RuntimeException(e); } return jsonObject; }
我收到此错误:
java.lang.StackOverflowError at com.dotmarketing.util.json.JSONArray.<init>(JSONArray.java:248) at com.dotmarketing.util.json.JSONObject.put(JSONObject.java:953) at com.dotmarketing.util.json.JSONObject.put(JSONObject.java:953) at com.dotmarketing.util.json.JSONObject.put(JSONObject.java:953) at com.dotmarketing.util.json.JSONObject.put(JSONObject.java:953) at com.dotmarketing.util.json.JSONObject.put(JSONObject.java:953) at com.dotmarketing.util.json.JSONObject.put(JSONObject.java:953) at com.dotmarketing.util.json.JSONObject.put(JSONObject.java:953) at com.dotmarketing.util.json.JSONObject.put(JSONObject.java:953) at com.dotmarketing.util.json.JSONObject.put(JSONObject.java:953) at com.dotmarketing.util.json.JSONObject.put(JSONObject.java:953) at com.dotmarketing.util.json.JSONObject.put(JSONObject.java:953) at com.dotmarketing.util.json.JSONObject.put(JSONObject.java:953) at com.dotmarketing.util.json.JSONObject.put(JSONObject.java:953) at com.dotmarketing.util.json.JSONObject.put(JSONObject.java:953) at com.dotmarketing.util.json.JSONObject.put(JSONObject.java:953) at com.dotmarketing.util.json.JSONObject.put(JSONObject.java:953) at com.dotmarketing.util.json.JSONObject.put(JSONObject.java:953) at com.dotmarketing.util.json.JSONObject.put(JSONObject.java:953) at com.dotmarketing.util.json.JSONObject.put(JSONObject.java:953) at com.dotmarketing.util.json.JSONObject.put(JSONObject.java:953) at com.dotmarketing.util.json.JSONObject.put(JSONObject.java:953) at com.dotmarketing.util.json.JSONObject.put(JSONObject.java:953) at com.dotmarketing.util.json.JSONObject.put(JSONObject.java:953)
我想要的JSON:只有最后一个JsonArray出问题了:
{ "wand": [ { formaat: 'vierkant15x15' tegels: [ {naam: '', imgThumb: '/bla/bla.png', largeImg: '/bla/bla2.png'} ,{naam: '', imgThumb: '/bla/bla.png', largeImg: '/bla/bla2.png'} ] } , { formaat: 'vierkant17x15' tegels: [ {naam: '', imgThumb: '/bla/bla.png', largeImg: '/bla/bla2.png'} ,{naam: '', imgThumb: '/bla/bla.png', largeImg: '/bla/bla2.png'} ] } ]
,“ vloer”:[{formaat:’vierkant10x15’tegels:[{naam:’‘,imgThumb:’/bla/bla.png’,largeImg:’/bla/bla2.png’},{naam:``, imgThumb:’/bla/bla.png’,largeImg:’/bla/bla2.png’}]},
{ formaat: 'vierkant45x15' tegels: [ {naam: '', imgThumb: '/bla/bla.png', largeImg: '/bla/bla2.png'} ,{naam: '', imgThumb: '/bla/bla.png', largeImg: '/bla/bla2.png'} ] } ]
}
我认为您使用的API存在问题(aka错误)。 JSONArray实现Collection(派生此API的json.org实现 没有 JSONArray实现Collection)。并JSONObject具有一个重载put()方法,该方法采用Collection并将其包装在中JSONArray(因此导致问题)。我认为您需要强制使用另JSONObject.put()一种方法:
JSONArray
Collection
JSONObject
put()
JSONObject.put()
jsonObject.put("aoColumnDefs",(Object)arr);
您应该向供应商提出错误,非常确定他们的JSONObject.put(String,Collection)方法已损坏。
JSONObject.put(String,Collection)