[英]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.