从 JSON 读取文件到 POJO 时获取空指针



我有下面给出的 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"
}
}
}

测试.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();
}
}
}).     

.java
@Data
@JsonIgnoreProperties
public class SEGMENT {

@JsonIgnore
private String TYPE;
@JsonIgnore
private String CLIENT_ID;
@JsonIgnore
private String UN_NUM;
}

测试.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 类。

有带有方法U.fromJsonMap(json)U.get(map, path)的下划线-java库。我是项目的维护者。

String jsonData = "{n"
+ "    "TEST": {n"
+ "        "NAME": "PART_TRAN",n"
+ "        "VERSION": "9.0",n"
+ "        "ID": "----",n"
+ "        "SEGMENT": {n"
+ "            "TYPE": "R",n"
+ "            "CLIENT_ID": "----",n"
+ "            "UN_NUM": "UN"n"
+ "        }"
+ "    }"
+ "}";
Map<String, Object> jsonObject = U.fromJsonMap(jsonData);
String type = U.<String>get(jsonObject, "TEST.SEGMENT.TYPE");
String unNum = U.<String>get(jsonObject, "TEST.SEGMENT.UN_NUM");
System.out.println(type);
System.out.println(unNum);

输出:

R
UN

最新更新