1

チュートリアルから、これはうまくいくはずだという印象を受けました (単純化された例):

public class Foo {
    private String bar;
    public String getBar() {
        return bar;
    }
    public void setBar(String bar) {
        this.bar = bar;
    }
    public static class Qux {
        private String foobar;
        public String getFoobar() {
            return foobar;
        }
        public void setFoobar(String foobar) {
            this.foobar = foobar;
        }
    }
}
...

String in = "{ \"bar\": \"123\", \"qux\" : {\"foobar\": \"234\"}}";
ObjectMapper mapper = new ObjectMapper();
Foo obj = mapper.readValue(in, Foo.class);

ただし、エラーが発生します

UnrecognizedPropertyException: Unrecognized field "qux" (Class Foo), not marked as ignorable

私は2.2.2を実行しています

4

3 に答える 3

2

Foo クラスには、Qux自動逆シリアル化を機能させるための type のインスタンス プロパティが必要です。Foo クラスが現在定義されている方法では、quxJSON オブジェクト値を挿入する宛先プロパティはありません。

public class Foo {
   private String bar;

   public String getBar() {
       return bar;
   }

   public void setBar(String bar) {
       this.bar = bar;
   }

   // additional property 
   private Qux qux;

   public Qux getQux() {
       return qux;
   }

   public void setQux(Qux value) {
       qux = value;
   }

   public static class Qux {
       private String foobar;

       public String getFoobar() {
         return foobar;
       }

       public void setFoobar(String foobar) {
           this.foobar = foobar;
       }
    }
}
于 2013-08-29T21:33:25.067 に答える