2

Android アプリで次のライブラリを使用しています -> Google/Gson。 次のjson文字列を適切なクラスに表現して抽象化する方法がわかりません。

"random_chunks": [
    {
        "2013-01-01T10:00:00+00:00": {
            "available": 61,
            "in_inventory": 61,
            "in_service": 61,
            "percent_in_inventory_available": 100,
            "percent_in_service_available": 100
        }
    },

基本的に、「2013-01-01T10:00:00+00:00」という動的な名前のオブジェクトを含む「random_chunks」という名前の配列があります。

これが私が考えていたことです:

public class RandomChunks {
    @SerializedName("random_chunks")
    private foo[] chunks;

    public class foo extends Object {
        // Here is where I get stuck
}

このランダムな名前をターゲットにするにはどうすればよいですか? @SerializedName("ランダムな文字列") とは言えません。考え?

4

1 に答える 1

0

あなたの構造は少し奇妙で、凝縮されています:

"random_chunks": [
{
    "2013-01-01T10:00:00+00:00": { } 
} , 
.... ]

これを表現するより自然な方法は、フィールドを直接使用することだと私には思えます。

 "random_chunks": {
    "2013-01-01T10:00:00+00:00": { },
    "2012-01-01T10:00:00+00:00": { },
    ...
 }

上記の JSON は Map です。randomChunks = Map<String, Stuff>

あなたの場合、フォーマットを変更することはできないので、それをマップの配列として表現することは可能だと思います(ただし、あまりきれいではありません):

 private Map<String, Stuff>[] weirdObjects;

実際には、これらのマップはすべて非常に退屈で、探している 1 つのフィールドという 1 つのキーしかありません。それを表現する最も効率的な方法ではありませんが、それが得られているようです。

注: 私は GSON に詳しくないので、GSON で処理できるかどうかはわかりません。ジャクソンはできますが。

于 2012-11-13T18:21:26.877 に答える