我有JSON,该JSON的属性中带有冒号(:
)。现在,我想知道如何使用java类属性来映射此属性名称。
我尝试了@JsonProperty("viacom:VideoDuration")
,但是它不起作用。
这是示例json
{
"shortTitle": "Teen Wolf",
"viacom:VideoDuration": "20h:30m",
"viacom:metadataLanguage": "en",
"viacom:contentType": "franchise",
"viacom:urlKey": "http://urlkey.com",
"viacom:vmid":"cee71f4a-ec7d-4ccd-a10d-9bf6b7506d352",
"viacom:originLanguage":"en"
}
注意:我没有选择将
json
property
名称重命名为其他名称。
答案 0 :(得分:1)
可能是您正在使用的库或其版本问题。 我刚刚创建了一个简单的测试,它已经正常运行。
测试类:
public class TestClass {
private String valueStr;
@JsonProperty("test:prop")
private String testProp;
public String getValueStr() {
return valueStr;
}
public void setValueStr(String valueStr) {
this.valueStr = valueStr;
}
public String getTestProp() {
return testProp;
}
public void setTestProp(String testProp) {
this.testProp = testProp;
}
}
并测试:
@Test
public void test()
throws JsonParseException, JsonMappingException, IOException {
String test = "{\r\n" +
" \"test:prop\": \"Teen Wolf\",\r\n" +
" \"valueS\": \"franchise\"\r\n" +
"}";
ObjectMapper mapper = new ObjectMapper();
TestClass data = mapper.readValue(test, TestClass.class);
Assert.assertTrue("expected Teen Wolf, actual=" + data.getTestProp(),
Objects.equals("Teen Wolf", data.getTestProp()));
}
我使用了com.fasterxml.jackson.databind.ObjectMapper
中的com\fasterxml\jackson\core\jackson-databind\2.8.8\jackson-databind-2.8.8.jar
在Java类中,"viacom:VideoDuration"
属性的类型是什么?我的意思是如果问题不是属性名称而是值呢?它也有一个冒号,您正在尝试以错误的方式反序列化它吗?