我需要映射一个 JSON 字符串,其中包含名为 long 和short 的值:
"status": {
"long": "Finished",
"short": "F",
"elapsed": 90
}
我尝试了以下类(class):
public class Status {
@JsonProperty("long")
public String _long;
@JsonProperty("short")
public String _short;
@JsonProperty("elapsed")
public Object elapsed;
}
使用命令:
objectMapper.readValue(resBody, Response.class);
响应包含状态部分:
{
"response": {
"id": 157016,
"timezone": "UTC",
"date": "2019-08-10T11:30:00+00:00",
"timestamp": 1565436600,
"status": {
"long": "Long Value",
"short": "LV",
"elapsed": 20
}
}
}
但我仍然收到以下错误:
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "long"
如何解决这个问题?我无法控制 JSON 格式。
最佳答案
嗯,这显然不是问题的完美解决方案,但人们可能会发现它是一种有用的解决方法:
由于我不关心这些值,因此我只需重命名它们的名称并相应地调整类成员名称:
在作为响应得到的 json 字符串 resBody 上,我将执行以下操作
@NotNull
private static String mitigateLongAndShortValueNames(String resBody) {
resBody = resBody.replaceAll("\"long\":", "\"longValue\":");
resBody = resBody.replaceAll("\"short\":", "\"shortValue\":");
return resBody;
}
并改变
public class Status {
@JsonProperty("long")
public String _long;
@JsonProperty("short")
public String _short;
@JsonProperty("elapsed")
public Object elapsed;
}
至
public class Status {
public String longValue;
public String shortValue;
public Object elapsed;
}
这对我有用!
关于java - 如何映射包含名为 long 和 Short 的成员的 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72242140/