java原始数组到JSONArray

时间:2014-08-12 07:28:32

标签: java android json arrays

我正在尝试将java原始数组转换为JSONArray,但我的行为很奇怪。我的代码如下。

long [] array = new long[]{1, 2, 3};
JSONArray jsonArray = new JSONArray(Arrays.asList(array));
jsonArray.toString();

输出为["[J@532372dc"]

为什么我得到这个输出?我想获得像[1, 2, 3]

这样的输出

2 个答案:

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