私は JSON-RPC クライアントのようなものを持っていますが、入ってくる json 文字列を Java オブジェクトに逆シリアル化するのに問題があります。着信 json 形式は次のとおりです。
{"value":"xxxx","type":"xxxx"}
逆シリアル化したいオブジェクト:
@JsonAutoDetect
@JsonDeserialize()
public class ReturnValue {
private Object value;
private String type;
@JsonCreator
public ReturnValue(@JsonProperty("value") String val, @JsonProperty("type") String type) {
value = val;
this.type = type;
}
...getters, setters...
値が文字列の場合、これはうまくいくようですが、配列型の場合は、JsonMapping Exception がスローされます。次のように、Json の START_ARRAY トークンから java.lang.String のインスタンスを逆シリアル化できません。
{\"value\":[8, 10], \"type\":\"[int]\"}
コードは次のとおりです。
int[] arr = (int[])getReturnValue(jsonString).getValue();
getReturnValue は特別なものではありません:
ObjectMapper om = new ObjectMapper();
ReturnValue rv = null;
rv = om.readValue(json, ReturnValue.class);
return rv;
もう 1 つの問題は、type プロパティを Class 型にしたいのですが、これにより別のマッピング例外がスローされることです。ジャクソンでそれを行う方法はありますか、それとも自分で文字列から適切なクラスに変換する必要がありますか? アドバイスありがとうございます。