1

私は、ローカルファイル(SDカード上)にいくつかのJsonデータを保存するアプリを作成しようとしています..

初めて実行するときは、json-dataをファイルに保存するだけです...

次に、「applications_arr」を返します(ファイルからではなく、JsonReader から)

ここで保留中の asyncTask-class を参照してください。

そこにApplicationsModel.class (Parcelable を実装)


amFile = new File(this.activity.getFilesDir()+"/applications"+UUID.randomUUID()+".json");
gson = new GsonBuilder().create();

reader = new JsonReader(new BufferedReader(new InputStreamReader(new URL("http://software-center.ubuntu.com/api/2.0/applications/any/ubuntu/any/any/").openConnection().getInputStream())));
reader.beginArray();

//save am-json-data on sdcard
FileWriter fw = new FileWriter(amFile.getAbsoluteFile());
fw.write(gson.toJson(reader, ApplicationsModel.class));
fw.close();

//create am-arraylist to use now.. amFile is other use      
while (reader.hasNext()) {
    ApplicationsModel model = gson.fromJson(reader, ApplicationsModel.class);
    applications_arr.add(model);
}
reader.endArray();
reader.close();

エラーが次のように表示されます。

fw.write(gson.toJson(reader, ApplicationsModel.class));

私のLogcatはこのように見えます。

4

1 に答える 1

0

マニフェストでWRITE_EXTERNAL_STORAGE権限を指定する必要があります。

これは次のようになります。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

編集:

logcatを見ると、エラーは次のとおりです。

java.util.concurrent.ExecutionException:java.lang.IllegalArgumentException:com.google.gson.stream.JsonReaderではなくcom.ubuntu.apps.ApplicationsModelタイプの受信者が必要です

これは、GsonがApplicationModelを読み取ることを期待しており、代わりにJsonReaderを提供していることを意味します。

とは言うものの、あなたが読んでいるJsonをURLからファイルにストリーミングして保存しようとしている行はGsonを必要としません。Jsonをファイルに直接ストリーミングするだけです。

于 2012-12-26T01:02:12.280 に答える