2015-10-29 28 views
5

JSON形式で2つのint []とdouble []をjavaサーブレット経由で送信しようとしています。これはこれまで私が持っていたものです。javaのjsonオブジェクトへのint配列

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; 
} 

しかし、私はJSONobjectを印刷するとき、私はこの読めない結果を得る:私は、私はJSONObjectを送っていますJavaScriptで同じ結果を得る

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

を。 数字から文字列への変換に問題はありますか?代わりにJSONArrayを使うべきでしょうか?

+0

コンソールで 'val'を印刷しようとすると、同じことが表示されます。これは 'val'配列のアドレスであり、他の配列と同様です。 – user007

+0

確かに。 'String a = Arrays.toString(val)'はトリックを行いました。 – kongshem

+0

まず、配列を読み込み可能な形式に変換し(Arrays.asList()を使用してリストに変換する)、処理しなければなりません。 –

答えて

7

toStringメソッドがint[]またはdouble[]の場合、オブジェクトのデフォルトObject.toString()が返されているためです。

Arrays.toString(int[]/double[])と交換すると、予期した結果が得られます。

チェックのtoString詳細explantionため、このanswer。代わりに

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

使用を使用しての

+1

私はあなたの答えの前にそれを理解しましたが、感謝します。 「3分で回答を受け入れることができます」というプロンプトが表示された後、これを正解とマークします。 – kongshem

0

jo.put("val",val); 
jo.put("col",col_idx); 
jo.put("row",row_ptr); 
関連する問題