gpt4 book ai didi

java - 将嵌套数组转换为 JSON

转载 作者:太空宇宙 更新时间:2023-11-03 13:43:53 24 4
gpt4 key购买 nike

我在 Java 中有一个嵌套数组,像这样:

String [] [] x;

在我的代码中,我将其转换为 JSON 字符串,以使用以下代码将其通过 @JavascriptInterface 桥传递到在 WebView 中运行的 javascript:

String ret = (new JSONArray(Arrays.asList(x))).toString();

这在较新的设备上运行良好,但在测试较旧的设备时我遇到了非常奇怪的行为。而不是像这样创建一个漂亮的字符串:

"[ [ 1.234, 5, 7 ], [ 23.456, 7, 8 ] ]"

它正在创建一个如下所示的字符串:

'["[Ljava.lang.String;@405ba988"]'

据我所知,我使用的所有对象(JSONArray、Arrays)和相应的成员函数(toString、asList)自 API 级别 1 以来就已存在。

我做错了什么,或者我是否缺少一些我需要做的事情来适应早期版本的 Android?

最佳答案

在 Android 4.4(api 19) 之前 following是构造函数代码:

public JSONArray(Collection copyFrom) {
this();
Collection<?> copyFromTyped = (Collection<?>) copyFrom;
values.addAll(copyFromTyped);
}

如您所见,它只是添加了集合的成员,这就是为什么您得到 '["[Ljava.lang.String;@405ba988"]' 没有对它们进行额外处理的原因.

在 Android 4.4(api 19) 中添加和更改了一些功能 wrap方法被添加到可以处理数组的 JSONObject 中,JSONArray 中的相同构造函数是 changed使用它:

public JSONArray(Collection copyFrom) {
this();
if (copyFrom != null) {
for (Iterator it = copyFrom.iterator(); it.hasNext();) {
put(JSONObject.wrap(it.next()));
}
}
}

关于java - 将嵌套数组转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46312281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com