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();
}
}
Пожалуйста, добавьте некоторые исправления кода, а не только ссылки на руководства.