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);
    }
}
}
Другие вопросы по тегам