Java Can';t使用Jackson正确处理Android中的天气json

Java Can';t使用Jackson正确处理Android中的天气json,java,android,json,jackson,Java,Android,Json,Jackson,我在AsyncTask中有这个方法,GenericResults是一个类,在这个类中,我存储了来自应用程序的一系列不同结果,例如当前位置的纬度、经度和压力。我传递在AsyncTask的参数中创建的GenericResults对象,让它添加上述值,然后返回修改后的对象(所有这些都在doInBackground中) 我使用的天气API是weatherunderground的,位于 我遇到的问题有两个:只是迭代json,如果我告诉它停在JsonToken.END\u OBJECT上,它只会一直运行到j

我在
AsyncTask
中有这个方法,GenericResults是一个类,在这个类中,我存储了来自应用程序的一系列不同结果,例如当前位置的纬度、经度和压力。我传递在AsyncTask的参数中创建的GenericResults对象,让它添加上述值,然后返回修改后的对象(所有这些都在doInBackground中)

我使用的天气API是weatherunderground的,位于

我遇到的问题有两个:只是迭代json,如果我告诉它停在
JsonToken.END\u OBJECT
上,它只会一直运行到json中的第一个
}
,所以它永远不会到达我希望它停下来的地方。最重要的是,如果我在这个方法中使用任何
fieldName.equals()
,我会不断得到空指针异常。获取
pressure\u mb
字段内容的正确方法是什么

private void getWebPressure(String longitude, String latitude) {
    HttpURLConnection conn;
    try {
        URL weatherUrl = new URL("http://api.wunderground.com/api/"+API_KEY+"/conditions/q/"+latitude+","+longitude+".json");
        conn = (HttpURLConnection) weatherUrl.openConnection();
        InputStream in = new BufferedInputStream(conn.getInputStream());
        JsonFactory factory = new JsonFactory();
        JsonParser parser = factory.createParser(in);
        boolean done = false;
        while (!done) {
            parser.nextToken();
            String fieldName = parser.getCurrentName();
            parser.nextToken();
            Log.v(LOG_TAG, fieldName + " " + parser.getValueAsString());
            if (fieldName.equals("pressure_mb")) {
                done = true;
                result.setPressure(parser.getValueAsString());
            }
        }
        conn.disconnect();
    }
    catch(IOException e){
        Log.e(LOG_TAG,e.toString());
    }
}

在尝试执行任何
.equals()

while (parser.nextToken() != null && !done) {
            parser.nextToken();
            String name = parser.getCurrentName();
            if (name!=null){
                if (name.equals("pressure_mb")) {
                    parser.nextToken();
                    String value = parser.getText();
                    Log.v(LOG_TAG,value);
                    result.setPressure(value);
                    break;
                }
            }
        }