Java使用Gson将对象值更新为json文件
我有以下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
{
"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(访问被拒绝)”检查您的文件是否存在