【发布时间】:2020-01-03 21:45:12
【问题描述】:
我的 json 如下所示,它以字符串形式出现。我只想将 SEGMENT 对象 ex:(TYPE 和 UN_NUM) 中的两个字段映射到 pojo。我使用了以下返回空值的代码。
test.json
{
"TEST": {
"NAME": "PART_TRAN",
"VERSION": "9.0",
"ID": "----",
"SEGMENT": {
"TYPE": "R",
"CLIENT_ID": "----",
"UN_NUM": "UN"
}
}
}
test.java
process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
String data = exchange.getIn().getBody(String.class);
try{
XmlMapper xmlMapper = new XmlMapper();
JsonNode jsonNode = xmlMapper.readTree(data.toString());
ObjectMapper objectMapper = new ObjectMapper();
String value = objectMapper.writeValueAsString(jsonNode);
logger.info("Converting XML to JSON {}" , value);
SEGMENT seg = objectMapper.readValue(value, SEGMENT.class);
Test test = new Test(seg);
logger.info("Test Object {}" , test);
}catch (JsonParseException e){
e.printStackTrace();
}catch (JsonMappingException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
}
}).
SEGMENT.java
@Data
@JsonIgnoreProperties
public class SEGMENT {
@JsonIgnore
private String TYPE;
@JsonIgnore
private String CLIENT_ID;
@JsonIgnore
private String UN_NUM;
}
Test.java
@Data
public class Test {
private String NAME;
private String VERSION;
private String ID;
private SEGMENT segment;
}
日志:
: Test Object Test(SEGMENT=SEGMENT(TYPE=null, CLIENT_ID =null,UN_NUM =null))
我刚刚添加了用于映射 json 的 SEGMENT 类。
【问题讨论】:
-
你的 SEGMENT 类是什么样子的
-
@YashBansal 刚刚更新了 SEGMENT 类。
-
为什么要用注解@JsonIgnore
-
它正在抛出“com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field”异常。
-
请从属性中删除@JsonIgnore,同时粘贴您的测试类
标签: java json xml objectmapper