wake-up-neo.net

Wie kann ich aus einem JSONArray ein JSONObject machen?

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.

8
Grammin

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: [...]}.

17
david van brink

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

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.

1
Pez Cuckow

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


 }
}
1
zameer