0

我有一个使用 jackson 简单 jar 文件创建的 JSON 文件,我可以在上面读取和写入。

我的程序所做的基本上是: 第一次:创建一个 JSON 文件。读取 JSON 文件。修改 JSON 文件。

我需要的是第一次:创建 JSON 文件,然后将此文件传递给二进制文件。读取二进制文件,内部读取json的元素进行修改修改JSON文件将JSON文件传递给二进制文件并存储

我一直在使用jackson来创建、读取和写入文件,我知道有一个jar“bson4jackson”它应该这样做但是......我找不到这样做的方法。所以我真的需要你的帮助。

我用于读写的代码:

public class JSonUtil {

    private String filePath = "asset/licenses.json";

    public Product Product;

    public class Product{
        public String ID;
        public Licenses Licenses;

        public class Licenses{
            public int total;
            public Devices used;
            public int remain;

            public class Devices{
                public int numberUses;
                public String[] serialNumbers = new String[total];

                public boolean addDevice(String serial){
                    boolean res = false;
                    int i = 0;
                    while (serialNumbers[i] !=null){
                        i++;
                    }
                    if (i <total){
                        serialNumbers[i] = serial;
                        res = true;
                    }
                    return res;
                }
            }
        }
    }

    protected Product readJson(){
        Product res = new Product();
        res.Licenses = res.new Licenses();
        res.Licenses.used = res.Licenses.new Devices();
        ObjectMapper mapper = new ObjectMapper();
        System.out.println("Licenses path: "+filePath);
        File file  = new File(filePath);
        if(file.exists()){
            String theJsonString = "";      
            try {
                BufferedReader in = new BufferedReader(new FileReader(filePath));
                String line;
                while ((line = in.readLine()) != null){
                    theJsonString += line;
                }
                in.close();
            } catch (IOException e1) {
                e1.printStackTrace();
            }

            System.out.println("JSON String: "+ theJsonString);

            JsonNode rootNode = null;
            try {
                rootNode = mapper.readValue(theJsonString, JsonNode.class);
            } catch (JsonParseException e1) {
                e1.printStackTrace();
            } catch (JsonMappingException e1) {
                e1.printStackTrace();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            JsonNode totalNode = rootNode.get("Licenses").get("total");
            JsonNode usedNode = rootNode.get("Licenses").get("used").get("numberUses");
            JsonNode listUsedNode = rootNode.get("Licenses").get("used").get("serialNumbers");
            JsonNode remainNode = rootNode.get("Licenses").get("remain");
            JsonNode idStringNode = rootNode.get("ID");

            try {
                res.Licenses.total = mapper.readValue(totalNode, Integer.class);
                res.ID = mapper.readValue(idStringNode, String.class);
                res.Licenses.used.numberUses = mapper.readValue(usedNode, int.class);
                res.Licenses.remain = mapper.readValue(remainNode, int.class);
                res.Licenses.used.serialNumbers = mapper.readValue(listUsedNode, String[].class);
            } catch (JsonParseException e1) {
                e1.printStackTrace();
            } catch (JsonMappingException e1) {
                e1.printStackTrace();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        }else{
            System.out.println("NO Licenses FILE FOUND");
            res = null;
        }
        return res;
    }

    protected void writeJsonFile(Product product){
        try{
            ObjectMapper mapper = new ObjectMapper();
            mapper.writeValue(new File(filePath), product);
        } catch (JsonParseException e) {
                e.printStackTrace();
        } catch (JsonMappingException e) {
                e.printStackTrace();
        } catch (IOException e) {
                e.printStackTrace();
        }
    } 

请添加一些代码更正,而不仅仅是手册的链接。

4

0 回答 0