Java 如何区分作为解析json对象返回的类似字段名和json解析器?
我有一个Json文本,在下面的代码中,我得到了所需fiedname“localscope”的两个类似名称 现在我试图找出localscope,但由于有两个localscope作为字段,我下面的代码并没有给出期望的结果Java 如何区分作为解析json对象返回的类似字段名和json解析器?,java,json,parsing,jackson,Java,Json,Parsing,Jackson,我有一个Json文本,在下面的代码中,我得到了所需fiedname“localscope”的两个类似名称 现在我试图找出localscope,但由于有两个localscope作为字段,我下面的代码并没有给出期望的结果 private boolean parseLocal(JsonParser jp, PlaceMakerObject obj) throws IOException { while (jp.nextToken() != JsonToken.END_OBJECT)
private boolean parseLocal(JsonParser jp, PlaceMakerObject obj) throws IOException {
while (jp.nextToken() != JsonToken.END_OBJECT) {
String fieldname = jp.getCurrentName();
if ("localscope".equalsIgnoreCase(fieldname)) {
while (jp.nextToken() != JsonToken.END_OBJECT) {
String fieldname2 = jp.getCurrentName();
// System.out.println(fieldname2);
if ("woeid".equalsIgnoreCase(fieldname2)) {
jp.nextToken();
obj.setWoeid(jp.getText());
}
if ("type".equalsIgnoreCase(fieldname2)) {
jp.nextToken();
System.out.println(jp.getText());
obj.setType(jp.getText());
}
所以,当我打印type时,它同时打印两个localscope中的郊区和国家/地区字段,但我只需要一个。为什么要使用流式API而不是数据绑定?只需将JSON绑定到POJO中(您可以使用骨架类,省略不关心的字段,将映射器配置为忽略未知属性),然后选择所需的值。为什么要区分作为解析JSON对象Jackson JSON解析器返回的类似字段名?我想访问第一个localscope,而不是第二个
private boolean parseLocal(JsonParser jp, PlaceMakerObject obj) throws IOException {
while (jp.nextToken() != JsonToken.END_OBJECT) {
String fieldname = jp.getCurrentName();
if ("localscope".equalsIgnoreCase(fieldname)) {
while (jp.nextToken() != JsonToken.END_OBJECT) {
String fieldname2 = jp.getCurrentName();
// System.out.println(fieldname2);
if ("woeid".equalsIgnoreCase(fieldname2)) {
jp.nextToken();
obj.setWoeid(jp.getText());
}
if ("type".equalsIgnoreCase(fieldname2)) {
jp.nextToken();
System.out.println(jp.getText());
obj.setType(jp.getText());
}