Gsonライブラリを使用して、JSON文字列をカスタムクラスArrayList
のJsonLog
に変換する方法を教えてください。基本的に、JsonLog
は私のAndroidアプリによって作成されたさまざまな種類のログ - SMSログ、通話ログ、データログ - によって実装されるインターフェースです。そしてこのArrayList
はそれらすべてのコレクションです。 6行目でエラーが発生し続けます。
public static void log(File destination, JsonLog log) {
Collection<JsonLog> logs = null;
if (destination.exists()) {
Gson gson = new Gson();
BufferedReader br = new BufferedReader(new FileReader(destination));
logs = gson.fromJson(br, ArrayList<JsonLog>.class); // line 6
// logs.add(log);
// serialize "logs" again
}
}
コンパイラが型付けされたArrayList
を参照していることを理解していないようです。私は何をしますか?
Json文字列をカスタムオブジェクトにロードするには、 TypeToken を使用できます。
logs = gson.fromJson(br, new TypeToken<List<JsonLog>>(){}.getType());
あなたのJSONサンプルは:
{
"status": "ok",
"comment": "",
"result": {
"id": 276,
"firstName": "mohamed",
"lastName": "hussien",
"players": [
"player 1",
"player 2",
"player 3",
"player 4",
"player 5"
]
}
あなたがあなたのSharedPrefrencesにモジュールの配列リストを保存したいのであればそう:
1 - このメソッドを使用して、返されたアレイリストをJSON形式に変換します。
public static String toJson(Object jsonObject) {
return new Gson().toJson(jsonObject);
}
2-共有prefrenecesに保存する
PreferencesUtils.getInstance(context).setString("players", toJson((.....ArrayList you want to convert.....)));
3-いつでもそれを取得するにはそのような共有設定からJsonStringを取得します
String playersString= PreferencesUtils.getInstance(this).getString("players");
4-再度配列リストに変換する
public static Object fromJson(String jsonString, Type type) {
return new Gson().fromJson(jsonString, type);
}
ArrayList<String> playersList= (ArrayList<String>) fromJson(playersString,
new TypeToken<ArrayList<String>>() {
}.getType());
あなたがオブジェクトのArrayListを解析したい場合にもこの解決策は可能です---それはあなたがそれをあなたが助けることを望みます Gsonライブラリ .
もしあなたが配列を使いたいのなら、それはとても簡単です。
logs = gson.fromJson(br, JsonLog[].class); // line 6
JsonLog
を配列として提供しますJsonLog[].class
私はgsonについてはよくわかりませんが、これはJon.sampleを使って行う方法です。gsonを使用して同様の方法があるはずです。
{"プレーヤー":["プレーヤー1"、 "プレーヤー2"、 "プレーヤー3"、 "プレーヤー4"、 "プレーヤー5"]}
=================================================
import Java.io.FileReader;
import Java.util.List;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
public class JosnFileDemo {
public static void main(String[] args) throws Exception
{
String jsonfile ="fileloaction/fileName.json";
FileReader reader = null;
JSONObject jsb = null;
try {
reader = new FileReader(jsonfile);
JSONParser jsonParser = new JSONParser();
jsb = (JSONObject) jsonParser.parse(reader);
} catch (Exception e) {
throw new Exception(e);
} finally {
if (reader != null)
reader.close();
}
List<String> Players=(List<String>) jsb.get("Players");
for (String player : Players) {
System.out.println(player);
}
}
}