5

Google の cAdvisor API は、次のような JSON 出力を提供します。

{
  /system.slice/docker-13b18253fa70d837e9707a1c28e45a3573e82751f964b66d7c4cbc2256abc266.scope: {},
  /system.slice/docker-747f797d19931b4ef33cda0c519f935b592a0b828d16b8cafc350568ab2c1d28.scope: {},
  /system.slice/docker-bf947bfabf61cd5168bd599162cf5f5c2ea2350eece1ded018faebf598f7ee5b.scope: {},
  /system.slice/docker-e8e02d508400438603151dd462ef036d59fada8239f66be8e64813880b59a77d.scope: {
    name: "/system.slice/docker-e8e02d508400438603151dd462ef036d59fada8239f66be8e64813880b59a77d.scope",
    aliases: [...],
    namespace: "docker",
    spec: {...},
    stats: [...]
  }
}

これを、匿名オブジェクトに保持された変数/匿名名を持つ 4 つの同じ型の JSON オブジェクトとして説明します。

私の最初の考えは、次のようなことをするだけですmapper.readValue(response, Containers.class)

public class Containers extends BaseJsonObject {
    @JsonProperty
    public List<Container> containerList;
}

public class Container extends BaseJsonObject {
    @JsonProperty
    private String name;

    @JsonProperty
    public String[] aliases;

    @JsonProperty
    private String namespace;

    @JsonProperty
    private String spec;

    @JsonProperty
    public Stats[] stats;
}

しかし、私が考えることができるこれに関するすべてのバリエーションは、同じ結果をもたらしcom.xyz.Containers@45c7e403[containerList=<null>]ます。com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "/system.slice/docker-13b18253fa70d837e9707a1c28e45a3573e82751f964b66d7c4cbc2256abc266.scope" (class com.xyz.Containers), not marked as ignorable (one known property: "containerList"]) at [Source: java.io.StringReader@3d285d7e; line: 1, column: 97] (through reference chain: com.xyz.Containers["/system.slice/docker-13b18253fa70d837e9707a1c28e45a3573e82751f964b66d7c4cbc2256abc266.scope"])ACCEPT_SINGLE_VALUE_AS_ARRAY = false

私はもう試した:

  • mapper.readValue(response, Container[].class)
  • mapper.readValue(response, Containers.class)
  • mapper.readValues(jsonParser, Container.class)

以下の構成と同様に:

  • mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
  • mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);

非配列に保持されている変数/匿名名を持つ JSON オブジェクトを解析するにはどうすればよいですか? これは何と呼ばれていますか?

4

1 に答える 1