簡體   English   中英

如何使用 gson 解析 json 文件?

[英]How do I parse a json file using 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().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.newBufferedReader你可以指定編碼:

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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM