Writer не работает для файла json с помощью Gson, файл json остается пустым после выполнения кода
Я пытаюсь записать данные JSON в файл JSON.
После выполнения кода ошибки не выдаются, но файл.json пуст.
Пожалуйста, найдите ниже код и помощь по этому
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
public class Test {
public static void main(String[] args) throws JSONException {
try {
List<String> foo = new ArrayList<String>();
foo.add("1");
foo.add("2");
foo.add("3");
System.out.println("values :: "+foo);
Writer writer = new FileWriter("operatorList.json");
Gson gson = new GsonBuilder().create();
gson.toJson(foo, writer);
}
catch(Exception e) {
e.printStackTrace();
}
}
}
2 ответа
Вы находитесь на правильном пути, просто запишите (flush() и close()), например, так:
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
public class Test {
public static void main(String[] args) throws JSONException {
try{
List<String> foo = new ArrayList<String>();
foo.add("1");
foo.add("2");
foo.add("3");
System.out.println("values :: "+foo);
Writer writer = new FileWriter("operatorList.json");
Gson gson = new GsonBuilder().create();
gson.toJson(foo, writer);
writer.flush(); //flush data to file <---
writer.close(); //close write <---
}catch(Exception e){
e.printStackTrace();
}
}
Мой предыдущий ответ не помог вам. Попробуй это. Проблема, кажется, связана с сериализацией / десериализацией списков. Надеюсь, это поможет, вы просто сможете это запустить.
public class Main {
public static void main(String[] args) {
List<String> operators = new ArrayList<>();
operators.add("Bruce Lee");
operators.add("Jackie Chan");
operators.add("Chuck Norris");
Type listOfStringObjects = new TypeToken<List<String>>(){}.getType();
Gson gson = new GsonBuilder().create();
String json = gson.toJson(operators, listOfStringObjects);
try(FileWriter writer = new FileWriter("operatorList.json")) {
writer.append(json);
System.out.println("Successfully serialized operators!");
}catch (IOException ex) {
System.err.format("An IO Exception was occurred: %s%n", ex);
System.exit(-1);
}
// Deserializing
System.out.println("Deserializing operators from JSON (Reading back)...");
try(BufferedReader reader = new BufferedReader(new FileReader("operatorList.json"))) {
StringBuilder jsonData = new StringBuilder();
String line;
while((line = reader.readLine()) != null) {
jsonData.append(line);
}
List<String> operatorsRead = gson.fromJson(jsonData.toString(), listOfStringObjects);
for(String operator : operatorsRead) {
System.out.println("Operator: " + operator);
}
}catch (Exception ex) {
System.err.format("An IO Exception was occurred: %s%n", ex);
}
}
}