Ich habe eine Java-Klasse mit zwei attributes, die ich mit dieser Methode in json umwandeln. Ich folgte dieser andere Antwort: Return JSONArray instead of JSONObject, Jersey JAX-RSjavax.json erzeugt unverständliches json
public String toString(){
// takes advantage of toString() implementation to format {"a":"b"}
JsonObject json = Json.createObjectBuilder()
.add("sentence", sentence)
.add("category", category).build();
return json.toString();
}
Der String I in eine Arraylist von Strings eingekapselt zu bekommen, und über HTTP gesendet (Ich verwende Jersey):
return Response.status(200).entity(response).build();
Wie auch immer, der Knoten client is use kann es nicht richtig parsen: es bekommt den Array-Teil, greift auf die Elemente perfekt zu. Aber nicht die JSON-Schlüssel und Werte; kehrt undefined:
jsonRespuesta = JSON.parse(body)[0];
console.log(jsonRespuesta);
console.log("Frase: " +jsonRespuesta.sentence + " ,Categoria: " + jsonRespuesta.category);
Returns:
{"sentence":"hola","category":"2"}
Frase: undefined ,Categoria: undefined
Was versagt hat? Wenn es hilft, zeigt das Erfassen der Pakete mit wireshark die Array-Mitglieder als Strings an.
Der Schlüssel war das: machen und ArrayList und die toString auf das gesamte Array. Der JSON wurde tatsächlich zweimal kodiert. –
ledermauss