Json到Java对象具有相同的键但不同的对象inisde

时间:2017-05-12 11:49:40

标签: java json jackson

我有一个问题,如何将具有相同键的JSON对象映射到不同的对象。 如果我用特定字段编写2个类,则会出现错误,因为数据元素包含两次。

如何将资源A映射到A类,将资源B映射到B类?

{
   "ETag":"oiojojojojoj==",
   "elements":[
      {
         "resource":"A",
         "ETag":null,
         "data":[
            {
               "anotherfield":"text",
               "id":1,
               "name":"GB"
            }
         ]
      },
      {
         "resource":"B",
         "ETag":"dmVuZG9yOzIwMTctMDUtMDlUMTQ6MzE6NDNa",
         "data":[
            {
               "field":"read",
               "id":1
            }
         ]
      }
   ]
}

这些课程可能如下所示:

public class Element {
    @JsonProperty("resource")
    public String resource = null;
    @JsonProperty("ETag")
    public Object eTag = null;
    @JsonProperty("data")
    public List<A> dataInA = null;
    @JsonProperty("data")
    public List<B> dataInB = null;
}

public class Example {

    @JsonProperty("ETag")
    public String eTag;
    @JsonProperty("elements")
    public List<Element> elements = null;

}

A类

public class A {

    @JsonProperty("anotherfield")
    public String anotherfield;
    @JsonProperty("id")
    public Integer id;
    @JsonProperty("name")
    public String name;

}

B类

public class B {

    @JsonProperty("field")
    public String field;
    @JsonProperty("id")
    public Integer id;

}

非常感谢!

编辑:

当我将JSON元素切换到dataA和dataB时,它可以工作。

{
   "ETag":"oiojojojojoj==",
   "elements":[
      {
         "resource":"A",
         "ETag":null,
         "dataA":[
            {
               "anotherfield":"text",
               "id":1,
               "name":"GB"
            }
         ]
      },
      {
         "resource":"B",
         "ETag":"dmVuZG9yOzIwMTctMDUtMDlUMTQ6MzE6NDNa",
         "dataB":[
            {
               "field":"read",
               "id":1
            }
         ]
      }
   ]
}

元素类:

public class Element {

    @JsonProperty("resource")
    public String resource;
    @JsonProperty("ETag")
    public Object eTag;
    @JsonProperty("dataA")
    public List<A> dataInA;
    @JsonProperty("dataB")
    public List<B> dataInB;

}

0 个答案:

没有答案