2016-06-17 33 views
0

ich einen Anruf zu tätigen Dienste, um Ruhe und es gibt einen JSON-String, wie folgt aussieht:Parsing JsonArray innerhalb JsonArray (verschachtelte)

{ 
    "head":[ 
      "\"head1\"", 
      "head2", 
      "head3" 
    ], 
    "tail":[ 
      [ 
       "tail1", 
       "tail2",' 
       "tail3" 
      ], 
      [ 
       "tail1a", 
       "tail2a", 
       "tail3a" 
      ], 
      ....and so on till n. 
      ] 
} 

ich die json so analysieren möchte, dass ich ein (Schlüssel, Wert) Paar. Ie head1=tail1, head2=tail2, head1=tail1a, head2=tail2a und so weiter.

Gibt es einen Weg, dies zu erreichen? Schlage auch vor, welchen JSON ich verwenden soll, ich habe 3 Arten von JAR-Dateien über das Internet gefunden und bin total verwirrt.

+1

Wie für die JSON-Bibliotheken sollten Sie ihre Dokumentation lesen und sie testen. Es gibt viele Bibliotheken, die im Prinzip die gleichen Funktionen haben (wie Json-Simple, Gson, Jackson, etc.). Was das Mapping angeht: Sie müssten es selbst machen. Auf einer Basisebene können Sie sich JsonObject als eine Karte und JsonArray als ein Array vorstellen. Wenn du sie mixst, hast du Maps in Maps in Arrays von Maps usw. - Probier einfach etwas auf dem Boden aus und zeig uns, was du hast. – Thomas

Antwort

0

ich org.json Paket verwenden, um mehr darüber zu lesen org.json klicken here

Beispielcode

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

public class Example { 

public static void main(String[] args) { 
    String jsonString = "{\"head\":[\"head1\",\"head2\",\"head3\"],\"tail\": [[\"tail1\",\"tail2\",\"tail3\"],[\"tail1a\",\"tail2a\",\"tail3a\"]]}"; 
    try { 
     JSONObject mainJsonObject = new JSONObject(jsonString); 
     JSONArray headJsonArray = mainJsonObject.getJSONArray("head"); 
     JSONArray tailJsonArray = mainJsonObject.getJSONArray("tail"); 
     Map<String, List<String>> keyValue = new HashMap<String, List<String>>(); 
     int index = 0; 
     for (int i = 0; i < headJsonArray.length(); i++) { 
      String head = headJsonArray.getString(i); 
      List<String> values = new ArrayList<String>(); 
      for (int j = 0; j < tailJsonArray.length(); j++) { 
       JSONArray anotherTailArray = tailJsonArray.getJSONArray(j); 
       values.add(anotherTailArray.getString(index)); 
      } 
      keyValue.put(head, values); 
      index++; 
     } 

     for (String key: keyValue.keySet()) { 
      List<String> values = keyValue.get(key); 
      for (int i = 0; i < values.size(); i++) { 
       System.out.println(key + " = " + values.get(i)); 
      } 
     } 

    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

} 
} 

Ausgabe

head1 = tail1 
head1 = tail1a 

head2 = tail2 
head2 = tail2a 

head3 = tail3 
head3 = tail3a 

Dies ist nur ein Beispiel, können Sie Refaktor nach Ihren Bedürfnissen.

+0

Danke @Ravikumar – srikanth