将Json数组转换为普通Java数组

Hou*_*lem 127 java android json

有没有办法将JSON数组转换为普通的Java Array for android ListView数据绑定?

Pen*_*m10 182

ArrayList<String> list = new ArrayList<String>();     
JSONArray jsonArray = (JSONArray)jsonObject; 
if (jsonArray != null) { 
   int len = jsonArray.length();
   for (int i=0;i<len;i++){ 
    list.add(jsonArray.get(i).toString());
   } 
} 
Run Code Online (Sandbox Code Playgroud)

  • for循环缺少右括号...尝试编辑但是没有足够的字符通过批准.那好吧!只是一个FYI. (5认同)

Nic*_*ick 56

如果您还没有JSONArray对象,请致电

JSONArray jsonArray = new JSONArray(jsonArrayString);
Run Code Online (Sandbox Code Playgroud)

然后简单地循环,构建自己的数组.此代码假定它是一个字符串数组,应该不难修改以适合您的特定数组结构.

List<String> list = new ArrayList<String>();
for (int i=0; i<jsonArray.length(); i++) {
    list.add( jsonArray.getString(i) );
}
Run Code Online (Sandbox Code Playgroud)

  • .size()应该是.length() (5认同)
  • 对不起,你是对的 - 我把LIST与JSONArrays混淆了:)确实是JSONArray.length(). (2认同)

Sta*_*Man 13

而不是使用捆绑式org.json库,尝试使用Jackson或GSON,这是一个单行.与杰克逊,f.ex:

List<String> list = new ObjectMapper().readValue(json, List.class);
// Or for array:
String[] array = mapper.readValue(json, String[].class);
Run Code Online (Sandbox Code Playgroud)


小智 10

也许这只是一种解决方法(效率不高),但你可以这样做:

String[] resultingArray = yourJSONarray.join(",").split(",");

显然你可以,用你喜欢的任何东西改变' '分隔符(我有一个JSONArray电子邮件地址)

  • 请注意,您必须绝对确保数据不包含分隔符char,否则您将最终损坏数据. (8认同)

Sam*_*ipp 6

使用 Java Streams,您可以只使用IntStream映射对象:

JSONArray array = new JSONArray(jsonString);
List<String> result = IntStream.range(0, array.length())
        .mapToObj(array::get)
        .map(Object::toString)
        .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)