我正在尝试将java原始数组转换为JSONArray,但我的行为很奇怪。我的代码如下。
long [] array = new long[]{1, 2, 3};
JSONArray jsonArray = new JSONArray(Arrays.asList(array));
jsonArray.toString();
输出为["[J@532372dc"]
为什么我得到这个输出?我想获得像[1, 2, 3]
答案 0 :(得分:4)
<强>问题:强>
Arrays.asList(array)
你无法将原始类型数组转换为集合,它需要是一个对象类型数组。由于asList
需要T...
注意它需要是一个对象。
为什么有效?
这是因为在参数中传递它会 autoBox ,因为数组是类型对象。
<强>溶液强>
您需要将其更改为其包装类,并将其用作数组。
<强>样品:强>
Long[] array = new Long[]{1L, 2L, 3L};
JSONArray jsonArray = new JSONArray(Arrays.asList(array));
jsonArray.toString();
<强>结果:强>
[1, 2, 3]
答案 1 :(得分:0)
试试这个..
您需要将长转换为长,然后您可以在JSONArray
中使用
long [] array = new long[]{1, 2, 3};
List<Long> longArray = asList(array);
JSONArray jsonArray = new JSONArray(longArray);
jsonArray.toString();
asList()
方法
public static List<Long> asList(final long[] l) {
return new AbstractList<Long>() {
public Long get(int i) {return l[i];}
// throws NPE if val == null
public Long set(int i, Long val) {
Long oldVal = l[i];
l[i] = val;
return oldVal;
}
public int size() { return l.length;}
};
}