首页 > 解决方案 > 将 JSONArray 写入文件,仅写入第一个值集合

问题描述

执行以下代码时,print 函数打印 jsonarray 中的所有元素,但 writer,只打印第一个元素集合。

到目前为止,我已经尝试了代码中显示的内容,另外还遍历了列表

public class FileWrapper {

    public static void WriteRelease(String filename, ArrayList<Object> list) throws IOException, JSONException{

        File file = new File(filename);
        FileWriter filew = new FileWriter(filename);  
        JSONArray jsonarray = new JSONArray();

        //System.out.println(jsonarray.put(list).toString());
        jsonarray.add(list);
        System.out.println(jsonarray);
        jsonarray.writeJSONString(jsonarray,filew);
        filew.close();
    }
}

我要写入文件的输出与标准输出相同:

[[Title - Eminem 回归状态 - 盗版语言 - eng ReleaseDate - 2004-09-28 格式 - CD Track Count - 11]] [[Title - Eminem 演出状态 - 官方语言 - eng ReleaseDate - 2002 格式 - 数字媒体轨道Count - 20]] [[Title - The Eminem Show Status - 官方语言 - eng ReleaseDate - 2002 格式 - Digital Media Track Count - 19]]

同样,写的只是这样:

[[标题 - 阿姆回归状态 - 盗版语言 - eng ReleaseDate - 2004-09-28 格式 - CD Track Count - 11]]

标签: javaarraysjsonobjectarraylist

解决方案


请检查我的解决方案: App.java 类

// JSON解析器对象解析读取文件 JSONParser jsonParser = new JSONParser();

try {
            URL resource = App.class.getClassLoader().getResource("info.json");
            System.out.println(resource.toString());
            FileReader reader = new FileReader(resource.getFile());

            // Read JSON file
            Object obj = jsonParser.parse(reader);

            JSONArray infoList = (JSONArray) obj;
            System.out.println(infoList);

            Information i = new Information();

            List<Information> info = i.parseInformationObject(infoList);

            saveInformation(info);
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();

        } catch (IOException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        }

并迭代: Information.java 类

List<Information> parseInformationObject(JSONArray infoList) {
        List<Information> in = new ArrayList<>();

        infoList.forEach(emp -> {

            JSONObject info = (JSONObject) emp;

            String id = info.get("id").toString();
            String state = info.get("state").toString();
            String type = null;
            if (info.get("type") != null) {
                type = info.get("type").toString();
            }
            String host = null;
            if (info.get("host") != null) {
                host = info.get("host").toString();
            }
            long timestamp = (long) info.get("timestamp");

            in.add(new Information(id, state, type, host, timestamp));

        });
        return in;
    }

推荐阅读