我有一个有点奇怪的问题。我创建了一个对象,我们称之为 Profile,它通过我调用的 API 成功解析单个 JSON 对象。还有一个多配置文件接口,它将返回配置文件对象的 JSON 数组。问题是,多配置文件接口将子对象转换为字符串。有没有一种自动方法可以告诉杰克逊将这些解析为对象?
单个对象的示例:
{ "foo": "bar" }
多对象示例:
[ "{ \"foo\": \"bar\" }", "{ \"blah\": \"ugh\" }" ]
(抱歉不能使用真实数据)
请注意,子对象实际上是字符串,其中包含转义引号。
为了完整起见,我的多对象解析代码如下所示:
ObjectMapper mapper = new ObjectMapper();
Profile[] profile_array = mapper.readValue(response.content, Profile[].class);
for (Profile p: profile_array)
{
String user = p.did;
profiles.put(user, p);
}
正如我所说,在单配置文件的情况下,配置文件对象会解析。在多配置文件的情况下,我得到了这个例外:
Exception: org.codehaus.jackson.map.JsonMappingException: Can not construct instance of com.xyz.id.profile.Profile, problem: no suitable creator method found to deserialize from JSON String