11package com .contentstack .sdk ;
22
3- import java .util .ArrayList ;
4- import java .util .LinkedHashMap ;
5- import java .util .List ;
63import org .jetbrains .annotations .NotNull ;
74import org .json .JSONArray ;
85import org .json .JSONObject ;
6+
7+ import java .util .ArrayList ;
8+ import java .util .LinkedHashMap ;
9+ import java .util .List ;
10+ import java .util .Map ;
911import java .util .logging .Logger ;
1012
1113
@@ -68,6 +70,7 @@ protected synchronized void setJSON(@NotNull JSONObject jsonobject) {
6870
6971 if (receiveJson .has ("items" )) {
7072 Object itemsObj = receiveJson .opt ("items" );
73+
7174 if (itemsObj instanceof JSONArray ) {
7275 JSONArray jsonArray = (JSONArray ) itemsObj ;
7376 syncItems = new ArrayList <>();
@@ -77,14 +80,26 @@ protected synchronized void setJSON(@NotNull JSONObject jsonobject) {
7780 syncItems .add (sanitizeJson (jsonItem ));
7881 }
7982 }
80- } else {
81- if (itemsObj instanceof JSONObject ) {
82- syncItems = new ArrayList <>();
83- syncItems .add (sanitizeJson ((JSONObject ) itemsObj ));
84- } else {
85- logger .warning ("'items' is not a valid list. Skipping processing." );
86- syncItems = new ArrayList <>();
83+ } else if (itemsObj instanceof JSONObject ) {
84+ syncItems = new ArrayList <>();
85+ syncItems .add (sanitizeJson ((JSONObject ) itemsObj ));
86+ } else if (itemsObj instanceof List ) {
87+ List <?> itemsList = (List <?>) itemsObj ;
88+ syncItems = new ArrayList <>();
89+ for (Object item : itemsList ) {
90+ if (item instanceof JSONObject ) {
91+ syncItems .add (sanitizeJson ((JSONObject ) item ));
92+ } else if (item instanceof Map ) {
93+ JSONObject jsonItem = new JSONObject ((Map <?, ?>) item );
94+ syncItems .add (sanitizeJson (jsonItem ));
95+ } else {
96+ logger .warning ("Item in ArrayList is not a JSONObject or LinkedHashMap. Skipping. Type: " + item .getClass ().getName ());
97+ }
8798 }
99+ } else {
100+ logger .warning ("'items' is not a valid JSONArray, JSONObject, or ArrayList. Type: " +
101+ (itemsObj != null ? itemsObj .getClass ().getName () : "null" ));
102+ syncItems = new ArrayList <>();
88103 }
89104 } else {
90105 syncItems = new ArrayList <>();
0 commit comments