Java使用Gson将对象值更新为json文件

Java使用Gson将对象值更新为json文件,java,arrays,json,gson,Java,Arrays,Json,Gson,我有以下JSON文件: { "btnsAssign": [ { "btnCode": 1, "btnItemTXT": "Baguette", "btnItemCode": 1001, "btnAvatarPath": "path" }, { "btnCode": 2, "btnItemTXT": "Petit Pain", "btnItemCode": 1002, "bt

我有以下JSON文件:

{
  "btnsAssign": [
    {
      "btnCode": 1,
      "btnItemTXT": "Baguette",
      "btnItemCode": 1001,
      "btnAvatarPath": "path"
    },
    {
      "btnCode": 2,
      "btnItemTXT": "Petit Pain",
      "btnItemCode": 1002,
      "btnAvatarPath": "path"
    }
  ]
}
我有以下课程:

BtnMenuAssignModel.java

公共类BtnMenuAssignModel{
@SerializedName(“btnsAssign”)
@暴露
私有列表btnsAssign=null;
公共列表getBtnsAssign(){
返回btnsAssign;
}
公共无效设置TSASSIGN(列表btnsAssign){
this.btnsAssign=btnsAssign;
}
}
BtnsAssign.java

公共类BtnsAssign{
@SerializedName(“btnCode”)
@暴露
专用整数btnCode;
@SerializedName(“btnItemTXT”)
@暴露
私有字符串btnItemTXT;
@SerializedName(“btnItemCode”)
@暴露
私有整数btnItemCode;
@SerializedName(“btnAvatarPath”)
@暴露
私有字符串btnAvatarPath;
公共整数getBtnCode(){
返回btnCode;
}
公共无效代码(整数btnCode){
this.btnCode=btnCode;
}
公共字符串getBtnItemTXT(){
返回btnItemTXT;
}
公共void setBtnItemTXT(字符串btnItemTXT){
this.btnItemTXT=btnItemTXT;
}
公共整数getBtnItemCode(){
返回btnItemCode;
}
public void setBtnItemCode(整数btnItemCode){
this.btnItemCode=btnItemCode;
}
公共字符串getBtnAvatarPath(){
返回btnAvatarPath;
}
公共void setBtnAvatarPath(字符串btnAvatarPath){
this.btnAvatarPath=btnAvatarPath;
}
}

我需要更新一些对象,例如:object
btnItemTXT
索引1从“小痛”到“痛完成”,我如何才能?

首先将JSON文件转换为
btnmanassignmodel
,然后修改
btnmanassignmodel
并将
btnmanassignmodel
转换为JSON文件:


Gson gson = new Gson();

// read initial json from jsonfile.json
FileReader reader = new FileReader(new File("D:\\codes\\gitlab\\jsonfile.json"));
BtnMenuAssignModel newModel = gson.fromJson(reader, BtnMenuAssignModel.class);

// modify the json object
newModel.getBtnsAssign().forEach(btnsAssign -> {
    if (btnsAssign.getBtnCode() == 2) {
        btnsAssign.setBtnItemTXT("Pain Complet");
    }
});

// write new json string into jsonfile1.json file
File jsonFile = new File("D:\\codes\\gitlab\\jsonfile1.json");
OutputStream outputStream = new FileOutputStream(jsonFile);
outputStream.write(gson.toJson(newModel).getBytes());
outputStream.flush(); 



这是适合我的代码:

String file = "c:/Users/QAXX2121/Documents/a.json";
    try {
        Gson gson = new Gson();
        // read initial json from jsonfile.json
        FileReader reader = new FileReader(new File(file));
        BtnMenuAssignModel newModel = gson.fromJson(reader, BtnMenuAssignModel.class);

        // modify the json object
        newModel.getBtnsAssign().forEach(btnsAssign -> {
            if (btnsAssign.getBtnCode() == 2) {
                btnsAssign.setBtnItemTXT("Taher");
            }
        });

        // write new json string into jsonfile1.json file
        File jsonFile = new File(file);
        OutputStream outputStream = new FileOutputStream(jsonFile);
        outputStream.write(gson.toJson(newModel).getBytes());
        outputStream.flush();

你能用代码更新这个问题吗?你正在使用GSON将json读取为pojo?我需要将对json文件的更改写入到文件中写入新的json字符串会有帮助吗?使用你提到的上述代码,我如何写入文件?我尝试这样做:'FileInputStream fis=new FileInputStream(文件);Gson Gson=新的Gson();BufferedWriter bw=新的BufferedWriter(新文件编写器(文件));toJson(newModel,bw);'但我得到了错误:“java.io.FileNotFoundException:c:\BeBaker\a.ddll(访问被拒绝)”检查您的文件是否存在