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)
我之前的回答对你没有帮助。试试这个。问题似乎与序列化/反序列化列表有关。我希望它有帮助,你应该能够运行它。
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)
| 归档时间: |
|
| 查看次数: |
2843 次 |
| 最近记录: |