gpt4 book ai didi

java - 从 JSON 读取字段到 POJO 时获取空指针

转载 作者:行者123 更新时间:2023-12-02 09:08:38 24 4
gpt4 key购买 nike

我的 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();
}

}
}).

SEGMENT.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 类。

最佳答案

underscore-java具有方法 U.fromJsonMap(json)U.get(map, path) 的库。我是该项目的维护者。

    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

关于java - 从 JSON 读取字段到 POJO 时获取空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59585708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com