Konvertieren JsonNode, java array
Arbeite ich auf Spielen framewrok 2 mit websocket und JsonNode . das vordere Ende ist verbunden mit dem play framework-backend, die durch die Nutzung der websocket. Ich konvertiert ein javascript-array in ein json-Knoten und schickte es an das backend, die durch die Nutzung der webscoket Verbindung.
Nun mein problem ist, wie konvertiere ich das json-Objekt in ein java-array oder jede geeignete Struktur, so dass ich die Daten manipulieren.
dies ist das json-Objekt erstellt habe ich
var myjeson = {"x":arrayX,"y":arrayY} ;
dies ist das array, die dynamisch gefüllt
function pixelCount ()
{ arrayX[counter] = xcoordinate;
arrayY[counter] = ycoordinate;
socket.send(" from array X,Y "+arrayX[counter]+ " " +arrayY[counter]);
++counter;
}
den code unten sendet die Daten
$('button.send').click(function() {
sock.send(JSON.stringify(myjeson));
auf der server-Seite habe ich folgenden code
public static WebSocket<JsonNode> givenIn() {
return new WebSocket<JsonNode>() {
//called when the websocket is established
public void onReady(WebSocket.In<JsonNode> in, WebSocket.Out<JsonNode> out) {
//register a callback for processing instream events
in.onMessage(new Callback<JsonNode>() {
public void invoke(JsonNode event) {
Logger.info(event.toString());
}
wenn ich überprüfen Sie das Protokoll, die Nachricht wird geliefert :
unten ist der log-info
[info] application -
{"x":
[78.72727298736572,79.72727298736572,82.72727298736572,
7298736572,93.72727298736572,83.72727298736572132.72727298736572],
"y":
[82.6363639831543,82.6363639831543,63.54545593261719,63.54545593261719,64.545455932
61719,65.54545593261719,70.54545593261719,189.5454559326172,188.5454559326172]}
Nun will ich gerne diese Daten in einem array, so dass ich auf Sie zugreifen kann.
jede Anregung wird dankbar sein.eine alternative Vorschlag ist auch willkommen.
InformationsquelleAutor faisal abdulai | 2012-07-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Antwort meist in der Jackson-Dokumentation und die tutorial;
haben Sie mehrere Möglichkeiten, zu transformieren, die JsonNode in nützliche Daten.
Wenn Sie im Voraus wissen, die Struktur der Daten, die Sie verwenden können, die Datenbindung Ansatz: für "voll" Bindung machen eine Klasse entsprechend alle Felder); Bei einem weniger strukturierten Ansatz der 'raw' - Bindung können Sie die Verwendung generischer Objekte.
Sonst die Baum-Modell Ansatz sollte auch bei dir funktionieren; das Beispiel finden Sie in der verlinkten Seite passt Recht gut zu deinem Anwendungsfall.
Bitte versuchen Sie, das Beispiel, dann haben Sie spezifische Fragen, die kommen zurück mit der genauen praktischen oder phylosophical Probleme!
Sie sind willkommen 🙂 Wenn meine Antwort hilfreich war don ' T forget to vote up / pick es als gute Antwort. Wenn Sie hilfreiche detaillierte feedback, das Sie freigeben möchten, können Sie noch abstimmen, meine Antwort, aber fügen Sie Ihre eigenen Antwort.
Wenn Sie auf der Suche nach code-Beispiel, hier ist die Antwort stackoverflow.com/a/35599623/2369266
Downvote für das bestehen viele links und auch keine schnelle Lösung.
new ObjectMapper().convertValue(jsonNode, ArrayList.class)
fügte er als Antwort jetzt.
InformationsquelleAutor Stefano
Bewegte meinen Kommentar zu einer Antwort, denn es wurde von Ihnen positiv bewertet werden eine Menge.
Diese sollte das tun, was die OP benötigt:
new ObjectMapper().convertValue(jsonNode, ArrayList.class)
InformationsquelleAutor Alex Burdusel
Einen schnellen Weg, dies zu tun mit dem Baum-Modell... konvertieren der JSON-string in einen Baum von JsonNode:
Extrahieren Sie dann die untergeordneten Knoten und konvertieren Sie Sie in Listen:
Einen leichten länger, aber wohl besser Weg, dies zu tun ist die Definition einer Klasse, die die JSON-Struktur, die Sie erwarten:
Dann deserialisiert direkt wie folgt:
InformationsquelleAutor DanJ
Schnelle Antwort für die Tree-Model-Ansatz erwähnt von Stefano in der akzeptierten Antwort:
InformationsquelleAutor ZhaoGang
"... wie konvertiere ich das json-Objekt in ein java-array"
Der trick ist, zuerst den Iterator-Objekt mit "Elemente ()" - Methode, dann mit Guave "stream" - Methode rufen Sie den stream. Sobald Sie den stream Sie können alle Arten von array-Operationen(z.B. filter, map) zu verbrauchen Ihre Daten.
InformationsquelleAutor Wildhammer