在Java中将整型数组转换为JSON对象

5

我正在尝试将两个int []和一个double []以JSON格式放入我的Java servlet中发送。这是我目前的代码:

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

但是当我打印JSON对象时,得到了这个难以阅读的结果:
{"val":"[D@62ce3190","col":"[I@4f18179d","row":"[I@36b66cfc"}

我在 JavaScript 中发送 JSONObject 时得到了相同的结果。数字转换为字符串时是否存在问题?也许应该使用 JSONArray?


如果您尝试在控制台上打印“val”,它将打印相同的内容。这是“val”数组的地址,其他数组也是如此。 - user007
确实。 String a = Arrays.toString(val) 就解决了问题。 - kongshem
你需要先将数组转换为可读格式(使用Arrays.asList()将其转换为列表),然后再进行处理。 - Vivek Singh
2个回答

7

这是因为int[]double[]toString方法返回了对象的默认Object.toString()

将其替换为Arrays.toString(int[]/double[]),您将得到预期结果。

有关toString的更多解释,请参见此答案


1
我在你回答之前就想通了,但还是谢谢。等“您可以在3分钟内接受答案”的提示后,我会将其标记为正确答案。 - kongshem

0

不要使用

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

使用;

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接