我正在使用一个Android应用,其中从服务器同步日期时,数据以json字符串的形式接收,该字符串首先使用
转换为JSONObject。
JSONObject jsonObject = new JSONObject("jsonStringFromServer")
和这个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无法转换为java.lang.String []
我环顾四周,但找不到类似于在Java中将ArrayList转换为String []的简单解决方案。他将不胜感激
答案 0 :(得分:1)
JsonArray与Java的数组不同。您无法通过强制转换将JsonArray转换为常规Java数组。您可以做的是,通过遍历JsonArray将对象从JsonArray提取到常规Java数组中。
答案 1 :(得分:1)
您可以使用流从json数组中收集数据,并根据需要修改代码。下面的代码应该为您提供概述。
List<String> values = IntStream.range(0, jsonArray.length())
.mapToObj(i -> array.getJSONObject(i).get("key").toString()).collect(Collectors.toList());