8

コンパイル時に不明なキーを持つ json 構造を moshi で解析するにはどうすればよいですか。

"foo": {
  "name": "hello",
  "bar": {
    "unknownKey1": {
      "a": "1"
      }
    },
    "unknownKey2": {
      "b": "2"
    },
    "unknownKeyX": {
      "c": "X"
    }
  },
  "properties": {...}
}

@FromJsonのアダプターを使用してみましJSONObjectたが、ログにはjsonが空であるとだけ表示されます{}(私が期待する場所{"unknownKey1": { ... etc ...})

   class Foo {

        @Json(name = "name")
        String name;
        @Json(name = "bar")
        Bar bar;

        static class Bar {

        }
    }

class BarAdapter {

    @FromJson
    Bar fromJson(JSONObject json) {
        Log.d("xxx", "got " + json.toString());
        return new Bar();
    }
}

バー内の json にたどり着いたら、それを手動で反復してリストなどに追加できます (アイテムがいくつあるか分からないため)。

次のように使用します。

         Moshi moshi = new Moshi.Builder()
        .add(new BarAdapter())
        .add(new LinkedHashMapConverter())
        .build();

LinkedHashMapConverterモシの神々をなだめるために も追加する必要がありましたが、ログを追加すると、そのメソッドは呼び出されません (これは、実際の json とは別の問題である可能性があります)。

何か案は?

4

1 に答える 1

8

マップを使用します。

@FromJson
Bar fromJson(Map<String, Baz> json) {
    Log.d("xxx", "got " + json.toString());
    return new Bar();
}

マップの値の型もわからない場合は、Object を使用できません。

于 2016-05-06T02:02:49.690 に答える