allexh:
私は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
、あなたはエンコーディングをspeicifyことができます。
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);
}