调用检索 json 响应并解析它时遇到问题。
ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);
mapper.convertValue(respDataString, GetListingListResponse.class);
respDataString 在哪里
{
"status": "OK",
"branch_reference": "148644",
"listings": []
}
GetListingListResponse.java
@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"status",
"branch_reference",
"listings"
})
public class GetListingListResponse implements Serializable
{
@JsonProperty("status")
private String status;
@JsonProperty("branch_reference")
private String branchReference;
@JsonProperty("listings")
private List<Listing> listings;
}
Listing.java
@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"listing_etag",
"listing_reference",
"url"
})
public class Listing implements Serializable
{
@JsonProperty("listing_etag")
private String listingEtag;
@JsonProperty("listing_reference")
private String listingReference;
@JsonProperty("url")
private String url;
}
异常
(尽管至少存在一个 Creator):没有字符串参数构造函数/工厂方法可从字符串值反序列化('{"status":"OK","branch_reference":"148644","listings":[]}' ) 在 [来源:未知;行:-1,列:-1] 在 com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:63) 在 com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1455) 在 com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1081) 在 com.fasterxml.jackson.databind.deser.ValueInstantiator._createFromStringFallbacks(ValueInstantiator.java:371) 在 com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.createFromString(StdValueInstantiator.java:323) 在 com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromString(BeanDeserializerBase.java:1408) 在 com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:176) 在 com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:166) 在 com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4229) 在 com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:4165)
我对此一无所知。有什么问题吗?
不清楚为什么要使用方法
ObjectMapper.convertValue(Object fromValue, Class<T> toValueType)
。该方法基本上将第一个参数序列化为 JSON,然后将其反序列化回 toValueType
类型。 JavaDoc 在这里.
您可能想要的是
ObjectMapper.readValue(String content, Class<T> valueType)
它将 JSON 的输入 String
反序列化为指定类型。