【发布时间】:2020-11-14 23:18:59
【问题描述】:
我正在使用一个 Android 应用程序,当从服务器同步日期时,数据作为 json 字符串接收,首先使用 JSONObject jsonObject = new JSONObject("jsonStringFromServer") 将其转换为 JSONObject,而这个 jsonObject 有一堆 key:value集合,其中value 的形式为JSONArray,如{"id1":["stringa1","stringa2","stringa3"], "id2":["stringb1","stringb2","stringb3"], "id3":["stringc1","stringc2","stringc3"]} 等
我需要将这个JSONArray 转换成一个简单的String[],当我尝试使用简单的(String[]) jsonObject.get("id1") 进行转换时,我得到了这个错误java.lang.ClassCastException: org.json.JSONArray cannot be cast to java.lang.String[]
我环顾四周,但未能找到类似于如何在 java 中将 ArrayList 转换为 String[] 的简单解决方案。任何他都会高度赞赏
【问题讨论】:
-
请分享代码。
-
感谢@The_Humble_Fool,这意味着首先从 JSONArray 创建一个 ArrayList(因为我不知道它的长度),然后从这个 ArrayList 创建 String[]?由于数据量很大,我希望找到一些直接的方法并尽量减少所花费的时间。我也曾想过使用 ObjectSerializer 首先在服务器端序列化 Array(原始数据为 String[] 形式),然后在 Android 内部反序列化。对哪种方法更好的方法有何评论?
-
@AlwaysaLearner developer.android.com/reference/org/json/JSONArray#length() 它有一个可以在构造数组时调用的长度方法。这将帮助您获得正确的尺寸并将物品推入其中。不需要额外创建 ArrayList。
-
@AlwaysaLearner 我不是该领域的专家。我建议是否实施分页并分批获取数据以及当用户要求下一批时。这将有助于减轻客户的负担。随着新数据的不断涌现,您可以在客户端缓存数据。
标签: java android arrays string