Java 如何使用gson解析json文件?

Java 如何使用gson解析json文件?,java,json,parsing,utf-8,gson,Java,Json,Parsing,Utf 8,Gson,我试图使用gson从一个大的json文件中读取某些行。问题是我编写的代码不会解析utf-8编码 Gson gson = new Gson(); Items[] myItems = gson.fromJson(new FileReader("./input/raw-1.json"), Items[].class); System.out.println(gson.toJson(myItems)); Gson gson2 = new GsonBuilder().setPrettyP

我试图使用gson从一个大的json文件中读取某些行。问题是我编写的代码不会解析utf-8编码

Gson gson = new Gson();
    Items[] myItems = gson.fromJson(new FileReader("./input/raw-1.json"), Items[].class);
    System.out.println(gson.toJson(myItems));

Gson gson2 = new GsonBuilder().setPrettyPrinting().create();
    Writer writer = Files.newBufferedWriter(Paths.get("./output/output-sample-test.json"));
    gson2.toJson(myItems, writer);
    writer.close();

class Items {
    long id;
    int dayId;
    String clientAddress;
    String pickupAddress;
    String venueName;
    String pickupTime;
    double pickupLat;
    double pickupLon;
    double deliveryLat;
    double deliveryLon;
}
它会输出这些奇怪的信号:

"clientAddress": "Timisoara, Strada Gheorghe Lazăr nr. 24, bloc Fructus Plaza, ap. 22, et. 7"

我做错了什么?顺便说一下,对不起,我的英语不好。谢谢大家!

JSON应该用UTF-8编码
FileReader
假定该文件采用系统中文本文件的默认编码,该编码可能不是UTF-8。如果使用
Files.newbuffereder
可以指定编码:

try (Reader reader = Files.newBufferedReader(Paths.get("./input/raw-1.json"), StandardCharsets.UTF_8)) {
    Items[] myItems = gson.fromJson(reader, Items[].class);
}
同样,在写入时,您应该指定编码:

try (Writer writer = Files.newBufferedWriter(Paths.get("./output/output-sample-test.json", StandardCharsets.UTF_8)) {
    gson2.toJson(myItems, writer);
}

是的,现在开始工作了,很好。非常感谢你!!