我有一个使用 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();
}
}
请添加一些代码更正,而不仅仅是手册的链接。