Grundsätzlich habe ich:
JSONArray j = new JSONArray();
j.add(new JSONObject()); //JSONObject has a bunch of data in it
j.add(new JSONArray()); //JSONArray has a bunch of data in it
Und jetzt möchte ich diese JSONArray
in eine JSONObject
mit den gleichen Informationen darin verwandeln. Damit ich das Objekt umgehen kann und dann, wenn ich möchte, alle Informationen aus dem Objekt herausholen kann. Jede Hilfe wäre dankbar, danke.
Normalerweise enthält ein Json-Objekt Ihre Werte (einschließlich Arrays) als benannte Felder. So etwas wie:
JSONObject jo = new JSONObject();
JSONArray ja = new JSONArray();
// populate the array
jo.put("arrayName",ja);
Welcher in JSON wird {"arrayName" sein: [...]}.
Code:
List<String> list = new ArrayList<String>();
list.add("a");
JSONArray array = new JSONArray();
for (int i = 0; i < list.size(); i++) {
array.put(list.get(i));
}
JSONObject obj = new JSONObject();
try {
obj.put("result", array);
} catch (JSONException e) {
e.printStackTrace();
}
Können Sie die Daten ursprünglich nicht als JSONObject erhalten?
Vielleicht parsen Sie den String zunächst als JSONObject und als JSONArray? Woher kommt der JSON-String?
Ich bin nicht sicher, ob es möglich ist, einen JsonArray in ein JsonObject umzuwandeln.
Ich gehe davon aus, dass Sie Folgendes von json.org verwenden
JSONObject.Java
Ein JSONObject ist eine ungeordnete Sammlung von Name/Wert-Paaren. Seine äußere Form ist eine Zeichenfolge, die in geschweifte Klammern eingeschlossen ist und zwischen den Namen und Werten Doppelpunkte und zwischen den Werten und Namen Kommas steht. Das interne Formular ist ein Objekt mit den Methoden get () und opt (), um auf die Werte nach Namen zuzugreifen, und auf put () - Methoden, um Werte nach Namen hinzuzufügen oder zu ersetzen. Die Werte können jeden dieser Typen annehmen: Boolean, JSONArray, JSONObject, Number und String oder das JSONObject.NULL-Objekt.
JSONArray.Java
Ein JSONArray ist eine geordnete Folge von Werten. Seine äußere Form ist eine Zeichenfolge, die in eckigen Klammern mit Kommas zwischen den Werten eingeschlossen ist. Die interne Form ist ein Objekt mit den Methoden get () und opt () zum Zugriff auf die Werte nach Index und put () - Methoden zum Hinzufügen oder Ersetzen von Werten. Die Werte können jeden dieser Typen annehmen: Boolean, JSONArray, JSONObject, Number und String oder das JSONObject.NULL-Objekt.
Ich habe ein JSONObject wie folgt: {"status":[{"Response":"success"}]}
.
Wenn ich den JSONObject-Wert, der ein JSONArray ist, automatisch in JSONObject konvertieren möchte, ohne einen statischen Wert zu verwenden, ist hier der Code dafür.
JSONArray array=new JSONArray();
JSONObject obj2=new JSONObject();
obj2.put("Response", "success");
array.put(obj2);
JSONObject obj=new JSONObject();
obj.put("status",array);
Konvertierung des JSONArray in ein JSON-Objekt:
Iterator<String> it=obj.keys();
while(it.hasNext()){
String keys=it.next();
JSONObject innerJson=new JSONObject(obj.toString());
JSONArray innerArray=innerJson.getJSONArray(keys);
for(int i=0;i<innerArray.length();i++){
JSONObject innInnerObj=innerArray.getJSONObject(i);
Iterator<String> InnerIterator=innInnerObj.keys();
while(InnerIterator.hasNext()){
System.out.println("InnInnerObject value is :"+innInnerObj.get(InnerIterator.next()));
}
}