ANDROID: Как вставить данные в файл JSON и сохранить их в локальном хранилище? - PullRequest
0 голосов
/ 18 октября 2018

Итак, я планирую сохранить данные, которые я ввел, в файл JSON, и я хочу, чтобы этот файл JSON был сохранен в локальном хранилище моего телефона.Но у меня есть эта ошибка в моем коде.Это про JsonWriter.Может кто-нибудь мне помочь?

// THIS IS MY CODE

private void writeToFile(OutputStream out, List<Wordbank> wordList) throws IOException{
    JsonWriter writer = new JsonWriter(new OutputStreamWriter(out, "UTF-8"));
    writer.setIndent(" ");
    writeWordbankArray(writer, wordList);
    writer.close();
}

public void writeWordbankArray(JsonWriter writer, List<Wordbank> wordList) throws  IOException{
    writer.beginArray();
    for(Wordbank wl : wordList){
        writeWordbank(writer, wl);
    }
    writer.endArray();
}

public void writeWordbank(JsonWriter writer, Wordbank wordbank) throws IOException{
    writer.beginObject();
    writer.name("English").value(wordbank.getEnglish());
    writer.name("Cebuano").value(wordbank.getCebuano());
    writer.name("Pronounciation").value(wordbank.getPronounciation());
    writer.name("POS").value(wordbank.getPos());
    writer.name("Audio").value(wordbank.getAudio());
    if(wordbank.getImage() != null || wordbank.getFx() != null){
        writer.name("Picture").value(wordbank.getImage());
        writer.name("Effect").value(wordbank.getFx());
    }else{
        writer.name("No name").nullValue();
    }
    writer.endObject();
}

// НИЖЕ ОШИБКА

2018-10-18 18:48:52.372 4965-4965/com.example.sampleFile/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.sampleFile, PID: 4965
java.lang.NullPointerException
    at java.io.Writer.<init>(Writer.java:88)
    at java.io.OutputStreamWriter.<init>(OutputStreamWriter.java:97)
    at com.example.sampleFile.backend.AddData.writeToFile(AddData.java:518)
    at com.example.sampleFile.backend.AddData.access$500(AddData.java:61)
    at com.example.sampleFile.backend.AddData$15.onSuccess(AddData.java:460)
    at com.example.sampleFile.backend.AddData$15.onSuccess(AddData.java:453)
    at com.google.firebase.storage.StorageTask.zza(com.google.firebase:firebase-storage@@16.0.2:123)
    at com.google.firebase.storage.zze.zza(Unknown Source:6)
    at com.google.firebase.storage.zzv.zza(com.google.firebase:firebase-storage@@16.0.2:89)
    at com.google.firebase.storage.zzy.run(Unknown Source:6)
    at android.os.Handler.handleCallback(Handler.java:789)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6944)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

Выше приведена ошибка.Мне нужна помощь с этим, пожалуйста, помогите мне!

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Есть другой подход, который вы можете использовать.Следующий код

writer.name("English").value(wordbank.getEnglish());
writer.name("Cebuano").value(wordbank.getCebuano());
writer.name("Pronounciation").value(wordbank.getPronounciation());
writer.name("POS").value(wordbank.getPos());
writer.name("Audio").value(wordbank.getAudio());
if(wordbank.getImage() != null || wordbank.getFx() != null){
    writer.name("Picture").value(wordbank.getImage());
    writer.name("Effect").value(wordbank.getFx());
}else{
    writer.name("No name").nullValue();
}

говорит мне, что вы уже знаете, чего ожидать, вы можете создать класс POJO и использовать библиотеку Gson для анализа этого объекта POJO в строку в формате JSON.Что позже вы можете использовать как

JSONObject jsonObj = new JSONObject(Jsonstring);

Вот пример

ModelPOJO modelPojo = new ModelPojo();
modelPojo.setEnglish("value");

Gson gson = new Gson();
String jsonString = gson.toJson(modelPojo);

jsonString является обязательной строкой.Для записи в локальное хранилище вы можете воспользоваться подходом @jake breen.

Надеюсь, это поможет!:)

0 голосов
/ 18 октября 2018
try {
            File file = new File("<storage location>" + filename + ".json");
            Writer writer = new BufferedWriter(new FileWriter(file));
            writer.write(jsonObject.toString());
            writer.close();

        } catch (Exception e) {
            Log.e("File Exception: ", e.getMessage());
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...