繁体   English   中英

java原始数组到JSONArray

[英]java primitive array to JSONArray

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

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

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

为什么我会得到这个输出? 我想得到这样的输出[1, 2, 3]

问题:

Arrays.asList(array)

您不能将原始类型数组转换为它需要是 Objects 类型数组的集合。 由于asList需要一个T...请注意,它必须是一个对象。

为什么它在工作?

那是因为在参数中传递它时,它将自动装箱,因为数组是类型对象。

解决方案:

您需要将其更改为其包装类,并将其用作数组。

样本:

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

结果:

[1, 2, 3]

试试这个..

您需要将long转换为Long然后您可以在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;}
    };
}

如果您想要的只是将原始整数数组转换为JSONArray ,那么长话短说。

JSONArray jsonArray = new JSONArray(Arrays.asList(longArray).get(0));

*你需要一个 try/catch 块

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM