Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何区分作为解析json对象返回的类似字段名和json解析器?_Java_Json_Parsing_Jackson - Fatal编程技术网

Java 如何区分作为解析json对象返回的类似字段名和json解析器?

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)

我有一个Json文本,在下面的代码中,我得到了所需fiedname“localscope”的两个类似名称

现在我试图找出localscope,但由于有两个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());
                    }

所以,当我打印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());
                    }