1

JSON文字列をJavaオブジェクトに変換しようとしています。すべてうまくいき、オブジェクトは作成されますが、そのプロパティは渡されません。これにより、空の (既定の) オブジェクトが生成されます。私は何が欠けていますか?

Java オブジェクト モデルは次のとおりです。

public class LetterCounts implements Serializable {

    private String UserId;
    private int Total;
    private int UnRead;
    private int Flagged;
    private boolean Deleted;

    public LetterCounts(){
    }
    //getters and setters
}

ここに私のコードスニペットがあります:

ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
T returnValue = mapper.readValue(sb.toString(), clazz);

ここで clazz は変換する必要があるクラスの名前です (この場合は LetterCounts) sb は次のような StringBuilder です:

{"$id":"1","UserId":"users_1","Total":30,"UnRead":13,"Flagged":17,"Deleted":false}

逆シリアル化に gson を使用すると、うまく機能します。しかし、ジャクソンコンバーターを使用する必要があります。

4

1 に答える 1

0

変数の命名に問題があるようです。getter メソッドと setter メソッドを省略したのでsetUserId(String UserId)getUserId()、 などのように見えると思います。Jackson は、(Java の命名規則に従って) JSON 内のフィールドがuserIdなどと名付けられることを期待しています (小文字に注意してください!)。JsonProperty アノテーションを使用して、目的の名前を強制することができます (例: @JsonProperty("UserId"))。

于 2013-10-10T13:44:45.963 に答える