2017-06-02 1 views
0

In dieser Methode habe ich ein Array von Strings, z. B. barchartLabels. Ich möchte dieses Array JSONObject hinzuzufügen:Wie Array von Zeichenfolge zu JsonObject hinzufügen?

Erwartete Ausgabe lautet:

{ "Daten": "[ "Januar", "Februar", "März", "April", "Mai", „June“, „Juli“] "}

public String array() { 
    JsonArray roleArray = new JsonArray(); 
    String barChartLabels[] = {"January", "February", "March", "April", "May", "June", "July"}; 
    Gson listG = new Gson(); 
    JsonObject jsonObj = new JsonObject(); 
    String list2 = listG.toJson(barChartLabels); 
    jsonObj.addProperty("data", list2); 
    roleArray.add(jsonObj);  
    return jsonObj.toString(); 
} 

Bei dem obigen Verfahren verwende ich Gson Objekt barchartLabels zu Zeichenfolge konvertieren dann mit JSONObject es hinzufügen. Aber ich bekomme die Ausgabe wie unten gezeigt. Gibt es eine andere Möglichkeit, das oben genannte zu tun?

{ "Daten": "[\" Januar \“, \ "Februar \", \ "March \", \ "April \", \ "Darf \", \ "June \", \ "Juli \"] "}

+2

Es ist das Standard-JSON-Format zu entkommen '' 'also keine Sorge –

+0

Dies ist Webservice, der oben erwähnt wird.In der Benutzeroberfläche nach Erhalt der Antwort ich retrive dieses Array von JSON und es dem Array in der UI zuweisst ... was ein Problem verursacht ... –

+0

Dies ist kein Problem, alles was passiert, ist, dass Ihre '" "' gemieden werden. Wie @Pavneet_Singh erwähnt hat, ist dies völlig Standard. – Scott

Antwort

0

Daten ist ein String, kein String[], so dass alle Anführungszeichen entgangen sind. Wenn Sie eine String[] nur

JsonArray data = new JsonArray(); 
    Stream.of(barChartLabels) 
     .forEach(data::add); 
    jsonObj.add("data", data); 

listG.toJson wollen, ist es zu einem JSON String konvertieren, so dass, wenn Sie hinzufügen, dass, es ist ein String. Überspringen Sie einfach diesen Schritt und fügen Sie ihn direkt hinzu

+0

Methode addproperty (String, String) in der JsonObject ist nicht anwendbar für Argumente (String, String []) –

+0

Sie könnten dies einfacher machen, indem Sie das Array übersprungen und nur mit einem Stream.of ("foo", "bar", "etc ...") – Novaterata

+0

Methode hinzufügen (String, JsonElement) in der JsonObje ct ist nicht anwendbar für Argumente (string, string []) –

Verwandte Themen