私は今日、GSON を使用して JSON 解析と格闘してきましたが、最小限の手間で多くのことがうまくいきました。
ただし、次の JSON 文字列については、いくつかの問題が発生し始めました。
{"success":1,"response":{"dvds":{"IronMan":{"rating":"awesome"},"BatMan":{"rating":"awesome"},"Smurfs":{"rating":"childish"}}}}
この JSON には、応答タイプのコレクションを含むコレクション「応答」があります。この例では、含まれている唯一の応答タイプは DVD です。しかし、私の問題はここにあります。「dvds」のすべての子を List 応答に解析し、各子を単一の Dvd クラス オブジェクト (文字列「タイトル」と文字列「評価」を含む) にしたいと考えています。
これまでのところ、個別の値/オブジェクトの解析と配列の解析は実際の問題はありませんでしたが、そのようなコレクションの解析を解決する方法に頭を悩ませることはできません。
今日のグーグルは「TypeTokens」を参照し続けましたが、この問題に関するさまざまなトピックのコードを見て、使用シナリオにそれを実装する方法をまだまったく理解していません。
具体的に言うと、「どうすれば GSON に自分の応答タイプと dvd コレクションの両方を正しく認識させることができますか?」
現在、私の ResponseData.class は次のようになっています。
public class ResponseData {
public int success;
public List<ResponseTypes> responsetypes;
public class ResponseType{
public List<Dvd> Dvds;
}
public class Dvd{
public String title;
public String rating;
}
}
これは、この問題を配列ベースの形式で見る方法ですが、今回は代わりにオブジェクトのコレクションに遭遇した場合に適用する必要があります。すべてのシナリオで、オブジェクトのクラスはその親の名前で認識できるはずだと考えることができます。
現在、解析は次のように開始されます。
try{
Gson gson = new Gson();
Reader reader = new InputStreamReader(stream);
ResponseData responsedata = gson.fromJson(reader, ResponseData.class);
return responsedata;
}
誰かが私を助けてくれることを本当に願っています!ありがとう!