编写器无法使用Gson处理json文件,代码执行后json文件为空白

Ram*_*Raj 0 java json filewriter writer gson

我正在尝试将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();            
        }
    }   
}
Run Code Online (Sandbox Code Playgroud)

小智 7

您使用的是正确的方式,只需编写器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();
    }    
}
Run Code Online (Sandbox Code Playgroud)

  • 确实,冲洗和关闭作家解决了我的问题!谢谢+1。 (3认同)
  • 谢谢!这真的很有帮助。我是 Java 新手,到目前为止我看到的所有示例都没有提到要刷新。 (2认同)

Cho*_*ial 0

我之前的回答对你没有帮助。试试这个。问题似乎与序列化/反序列化列表有关。我希望它有帮助,你应该能够运行它。

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);
    }
}
}
Run Code Online (Sandbox Code Playgroud)