2015-10-29 6 views
5

Ich versuche, zwei int [] und eine doppelte [] im JSON-Format durch mein Java-Servlet zu senden. Das habe ich bisher.int-Arrays zu JSON-Objekt in Java

private JSONObject doStuff(double[] val, int[] col_idx, int[] row_ptr){ 
    String a = JSONValue.toJSONString(val); 
    String b = JSONValue.toJSONString(col_idx); 
    String c = JSONValue.toJSONString(row_ptr); 
    JSONObject jo = new JSONObject(); 
    jo.put("val",a) 
    jo.put("col",b); 
    jo.put("row",c); 
    return jo; 
} 

Aber wenn ich die JSONObject drucken, erhalte ich diese unleserlich Ergebnis:

{"val":"[[email protected]","col":"[[email protected]","row":"[[email protected]"} 

ich das gleiche Ergebnis in Javascript bekommen, wo ich die JSONObject sende an. Gibt es ein Problem mit der Konvertierung von Zahlen zu String? Soll ich stattdessen JSONArray verwenden?

+0

Wenn Sie versuchen, Val auf der Konsole zu drucken, wird es dasselbe ausgeben. Es ist die Adresse von "val" -Array und ähnlich für die anderen. – user007

+0

In der Tat. 'String a = Arrays.toString (val)' hat es aber geschafft. – kongshem

+0

Sie müssen zuerst Ihre Arrays in ein lesbares Format konvertieren (konvertieren Sie es in eine Liste mit Arrays.asList()) und dann verarbeiten Sie es. –

Antwort

7

Es ist, weil die toString Methode der int[] oder double[] ist die Object.toString() Standard Object zurück.

Durch Arrays.toString(int[]/double[]) ersetzen, erhalten Sie erwartetes Ergebnis.

Überprüfen Sie diese answer für weitere Erläuterungen zu toString.

+1

Ich habe es kurz vor deiner Antwort herausgefunden, aber danke. Wird dies als die richtige Antwort nach der Aufforderung "Sie können eine Antwort in 3 Minuten akzeptieren" markieren. – kongshem

0

Statt mit

jo.put("val",a) 
jo.put("col",b); 
jo.put("row",c); 

Verwendung;

jo.put("val",val); 
jo.put("col",col_idx); 
jo.put("row",row_ptr);