2017-08-23 2 views
1

Ich erhalte eine JSON-Zeichenfolge als ["A", "B", "C", "D", "E"] in serlvet-Controller.Konvertieren von JSON-String in Java-String-Array

Ich möchte diese Zeichenfolge in ein Java-String-Array konvertieren. Die JSON-Zeichenfolge enthält auch [].

Ausgabe sollte eine Java-String-Array sein:

arr[0] = A 
arr[1] = B 

und so weiter. Könnten Sie bitte eine Parsing-Lösung vorschlagen?

Antwort

3

Mit einem Stream Sie es wie so umwandeln könnte:

String s = "[\"A\",\"B\",\"C\",\"D\",\"E\"]"; 
String[] arr = Arrays.stream(s.substring(1, s.length()-1).split(",")) 
       .map(e -> e.replaceAll("\"", "")) 
       .toArray(String[]::new); 

Sie auch eine JSON-Bibliothek verwenden könnte (was die bevorzugte Art und Weise sein könnte). Zum Beispiel unter Verwendung von Jackson:

String s = "[\"A\",\"B\",\"C\",\"D\",\"E\"]"; 
ObjectMapper mapper = new ObjectMapper(); 
String[] arr = mapper.readValue(s, String[].class); 
+2

Parsing JSON auf Ihrem ist riskant in Bezug auf Sicherheit (vor allem in einer Web-Umgebung). Verwenden Sie einfach eine der bekannten JSON-Bibliotheken als [GSON] (https://github.com/google/gson), [Jackson] (https://github.com/FasterXML/jackson) usw. – jannis

+0

Richtig @ Jannis, fügte ein Beispiel mit Jackson hinzu – baao

0
ArrayList<String> jsonStringToArray(String jsonString) throws JSONException { 

    ArrayList<String> stringArray = new ArrayList<String>(); 

    JSONArray jsonArray = new JSONArray(jsonString); 

    for (int i = 0; i < jsonArray.length(); i++) { 
     stringArray.add(jsonArray.getString(i)); 
    } 

    return stringArray; 
} 
Verwandte Themen