Java-переход из файла Json Jackson в двоичный файл с использованием bson4jackson

У меня есть JSON-файл, который я создал с помощью простого jar-файла Джексона, и я могу его прочитать и записать.

Моя программа в основном: Первый раз: Создайте файл JSON. читать файл JSON. Изменить файл JSON.

Первое, что мне нужно: создайте файл JSON, а затем передайте этот файл в двоичный файл. Прочитайте двоичный файл, внутренне прочитайте элементы json для их изменения. Измените файл JSON, передайте файл JSON в двоичный файл и сохраните его.

Я использовал Джексон для создания, чтения и записи файла, и я знаю, что есть 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();
        }
    } 

Пожалуйста, добавьте некоторые исправления кода, а не только ссылки на руководства.

0 ответов

Другие вопросы по тегам