次のJSONをJavaオブジェクトに変換する必要があります。 JSONのプロパティproviderResponse
にはプロパティのマップが含まれていますが、エスケープされdoublequoteでラップされています。その結果、プロパティproviderResponse
をJavaオブジェクトに逆シリアル化しません(String
となります)。私はobjectMapper.readValue(msgStr, classType)
を使用してJSONを逆シリアル化します。このメッセージは、AWSによってSNS配信ステータス通知用に生成されたもので、JSONメッセージを変更するコントロールはありません。 を設定してプロパティをエスケープ解除し、String
の代わりにJavaオブジェクトにデシリアライズすることは可能ですか?JSONからJavaオブジェクトへのエスケープされたプロパティの逆シリアル化
{
"delivery":{
"providerResponse":"{\"sqsRequestId\":\"308ee0c6-7d51-57b0-a472-af8e6c41be0b\",\"sqsMessageId\":\"88dd59eb-c34d-4e4d-bb27-7e0d226daa2a\"}"
}
}
@JsonProperty("providerResponse")
private String providerResponse;
私はこれにgsonを使用しました。他のクラスを含め、jsonを定義するクラスを作成する必要があります。つまり、このラベルを文字列として受け入れるのではなく、シリアライザにどのようなオブジェクトであるかを伝える必要があります。 – jdv
thx jdv。 gsonはこれまでこのプロジェクトで使用されていませんでした。レビューします。 – user1573133
ああ、私はジャクソンがJSON <->オブジェクトをマッピングするためのクラスと注釈であるように思われる答えと同じ機能を持っていると仮定しました。 – jdv