Gson库写入文件,只改变一个特定的值
Gson Library Write in the file and only change a specific value
我目前正在使用 Gson 库来 write/read .json 文件。我有这种方法来编写介绍 json.
public static void write(String key, String value){
GeneralJsonConfig gjc = new GeneralJsonConfig();
if(key.equals("testKey")){
gjc.setaucString(value);
}
Gson gson = new Gson();
String json = gson.toJson(gjc);
try{
FileWriter fw = new FileWriter(launcherConfigFile);
fw.write(json);
fw.close();
} catch(IOException e) {
}
}
但是假设我有这个。json:
{"testKey": "some test", "testKey2": "test 3"}
我只想将 thestKey 从 "some test" 更改为另一个文本,另一个 key/values 将保持原样,但使用我的方法另一个 values/key 只是消失了,我该如何解决这个问题才能让另一个 key/values 留下来?
更新:
找到了基于 sam100rav 答案的答案,我只是阅读了完整的 json 文件以获取 vaules,然后用我想要完成的更改再次编写它们:
public static void write(String key, String value){
Gson gson = new GsonBuilder().setPrettyPrinting().create();
try{
BufferedReader br = new BufferedReader(new FileReader(launcherConfigFile));
GeneralJsonConfig gjcObject = gson.fromJson(br, GeneralJsonConfig.class);
if(key.equals("testKey")){
gjc.setaucString(value);
}
String json = gson.toJson(gjcObject);
FileWriter fw = new FileWriter(launcherConfigFile);
fw.write(json);
fw.close();
br.close();
} catch (IOException e){
main.er.LogError("23", "");
}
JSONObject obj = new JSONObject();
obj.put("testKey", "some test");
obj.put("testKey2", "test 3");
if(key.equals("testKey")){
obj.put("testKey", value);
}
String json = obj.toString();
try{
FileWriter fw = new FileWriter(launcherConfigFile);
fw.write(json);
fw.close();
}
找到了基于 sam100rav 答案的答案,我只是阅读了完整的 json 文件以获取 vaules,然后用我想要完成的更改再次写入它们:
public static void write(String key, String value){
Gson gson = new GsonBuilder().setPrettyPrinting().create();
try{
BufferedReader br = new BufferedReader(new FileReader(launcherConfigFile));
GeneralJsonConfig gjcObject = gson.fromJson(br, GeneralJsonConfig.class);
if(key.equals("testKey")){
gjc.setaucString(value);
}
String json = gson.toJson(gjcObject);
FileWriter fw = new FileWriter(launcherConfigFile);
fw.write(json);
fw.close();
br.close();
} catch (IOException e){
main.er.LogError("23", "");
}
我目前正在使用 Gson 库来 write/read .json 文件。我有这种方法来编写介绍 json.
public static void write(String key, String value){
GeneralJsonConfig gjc = new GeneralJsonConfig();
if(key.equals("testKey")){
gjc.setaucString(value);
}
Gson gson = new Gson();
String json = gson.toJson(gjc);
try{
FileWriter fw = new FileWriter(launcherConfigFile);
fw.write(json);
fw.close();
} catch(IOException e) {
}
}
但是假设我有这个。json:
{"testKey": "some test", "testKey2": "test 3"}
我只想将 thestKey 从 "some test" 更改为另一个文本,另一个 key/values 将保持原样,但使用我的方法另一个 values/key 只是消失了,我该如何解决这个问题才能让另一个 key/values 留下来?
更新: 找到了基于 sam100rav 答案的答案,我只是阅读了完整的 json 文件以获取 vaules,然后用我想要完成的更改再次编写它们:
public static void write(String key, String value){
Gson gson = new GsonBuilder().setPrettyPrinting().create();
try{
BufferedReader br = new BufferedReader(new FileReader(launcherConfigFile));
GeneralJsonConfig gjcObject = gson.fromJson(br, GeneralJsonConfig.class);
if(key.equals("testKey")){
gjc.setaucString(value);
}
String json = gson.toJson(gjcObject);
FileWriter fw = new FileWriter(launcherConfigFile);
fw.write(json);
fw.close();
br.close();
} catch (IOException e){
main.er.LogError("23", "");
}
JSONObject obj = new JSONObject();
obj.put("testKey", "some test");
obj.put("testKey2", "test 3");
if(key.equals("testKey")){
obj.put("testKey", value);
}
String json = obj.toString();
try{
FileWriter fw = new FileWriter(launcherConfigFile);
fw.write(json);
fw.close();
}
找到了基于 sam100rav 答案的答案,我只是阅读了完整的 json 文件以获取 vaules,然后用我想要完成的更改再次写入它们:
public static void write(String key, String value){
Gson gson = new GsonBuilder().setPrettyPrinting().create();
try{
BufferedReader br = new BufferedReader(new FileReader(launcherConfigFile));
GeneralJsonConfig gjcObject = gson.fromJson(br, GeneralJsonConfig.class);
if(key.equals("testKey")){
gjc.setaucString(value);
}
String json = gson.toJson(gjcObject);
FileWriter fw = new FileWriter(launcherConfigFile);
fw.write(json);
fw.close();
br.close();
} catch (IOException e){
main.er.LogError("23", "");
}