23

次のコードをテストしようとしましたが、成功しませんでした。

class TestClass
{
  private class ND2Customer
  {
    public String name;
    public String description;
    public String email;
    public Boolean multiuser;

    public String dnszone;
    public String uri;
    public String type;

    public ND2Customer()
    {

    }
  }

  @Test
  public void TestJackson() throws JsonParseException, JsonMappingException, IOException
  {
    String json="{\"description\": \"test1u\", \"dnszone\": \"test1.public.sevenltest.example.com.\", \"uri\": \"http://199.127.129.69/customer/test1\", \"multiuser\": true, \"type\": \"2.0.3-3146\", \"email\": \"test1@com.com\", \"name\": \"test1\"}";
    ObjectMapper mapper = new ObjectMapper();

    ND2Customer casted=mapper.readValue(json, ND2Customer.class);

    String castedback=mapper.defaultPrettyPrintingWriter().writeValueAsString(casted);
    System.out.println(castedback);
  } 
}

この問題はこれとは異なり ます。Jacksonを使用したJSONの逆シリアル化-なぜJsonMappingException「適切なコンストラクターがない」のですか?

そしてこれ: JsonMappingException:タイプ[単純なタイプ、クラス]に適したコンストラクターが見つかりません:JSONオブジェクトからインスタンス化できません

そしてこれ: JsonMappingException:タイプ[単純なタイプ、クラス]に適したコンストラクターが見つかりません:JSONオブジェクトからインスタンス化できません

サブクラスではなく、デフォルトのコンストラクターを手動でオーバーライドしたためです。

この問題を解決するにはどうすればよいですか?

4

2 に答える 2

58

静的にします。ジャクソンは内部クラスに逆シリアル化できません

于 2012-10-16T16:47:24.550 に答える
1

問題はおそらく、Jacksonがクラスに適切に到達ND2Customerしてコンストラクターを呼び出すことができないことです。これはprivate、クラスが正常に見えるためです。それを作ってpublic、それがうまくいくかどうか見てみてください。

于 2012-10-16T14:23:14.710 に答える