Cześć,
przygotowuje aplikacje która używa słownika do wyszukania lematu słowa i tu mam pewien problem bo mam słownik postaci "słowo : lemat" mam to pliku txt. Chciałbym to zamienić na format Json i wrzucić na Firebase żebym potem mógł tego używać w aplikacji na androida która używa tej bazy danych. I tu mam problem bo napisałem sobie program w Netbeans w javie zamieniający plik na json tylko w pliku mam ok 9 milionów słow i program właczony nawet na całą noc nie jest w stanie tego przetworzyć i nie wiem jak to zrobić.
Przetworzenie tego pliku powinno zająć kilkanaście sekund max. Pokaż kod tej swojej aplikacji.
public static void main(String[] args) throws FileNotFoundException, IOException {
Scanner odczyt = new Scanner(new File("slownik.txt"));
JSONObject obj = new JSONObject();
FileWriter fileWriter = new FileWriter("Json2.json");
fileWriter.write("{\"stem\":");
while (odczyt.hasNext()) {
obj.put(odczyt.next(), odczyt.next());
}
fileWriter.write(obj.toJSONString());
fileWriter.write("}");
fileWriter.close();
}
nie fantazjowałem tu zbytnio bo to tylko do jednego mojego użytku
Nie baw się z JSONowaniem w takiej skali - generuj od razu gotowy plik, a nie twórz całe drzewo w pamięci.
Ew. wygeneruj listę zapytań SQL.
http://www.java67.com/2016/10/3-ways-to-convert-string-to-json-object-in-java.html to powinno pomóc i wtedy zostanie to zrobione w kilka sekund
Tylko samo wykonanie pętli while trwa chwilę ale potem zawiesza mi się na długo przy linii
fileWriter.write(obj.toJSONString());
Bo proces JSONowania milionów danych po prostu nie ma prawa być generycznie szybki :-P
Mówię Ci: nie baw się w żadne JSONObject
, tylko od razu zapisuj poprawny JSON
do pliku wyjściowego, rocket science
to nie jest, biorąc pod uwagę liberalność formatu JSON.