La lecture de la valeur de la clé imbriquée dans JSON avec Java (Jackson)

Je suis un nouveau programmeur Java à venir à partir d'un arrière-plan en Python. J'ai météo données qui sont collectées et retourné comme un JSON avec clés imbriquées, et je ne comprends pas comment tirer les valeurs dans cette situation. Je suis sûr que cette question a été posée, mais je vous jure que j'ai Cherché sur google et je n'arrive pas à trouver une réponse. Droit maintenant, je suis en utilisant json simple, mais j'ai essayé de commutation à Jackson et ne pouvait toujours pas comprendre comment le faire. Depuis Jackson/Gson semblent être la plupart des bibliothèques utilisées, j'avais aimerais voir un exemple d'utilisation de l'une de ces bibliothèques. Ci-dessous est un échantillon de données, suivi par le code que j'ai écrit jusqu'à présent.

{
    "response": {
        "features": {
            "history": 1
        }
     },
    "history": {
        "date": {
            "pretty": "April 13, 2010",
            "year": "2010",
            "mon": "04",
            "mday": "13",
            "hour": "12",
            "min": "00",
            "tzname": "America/Los_Angeles"
        },
        ...
    }
}

Fonction principale

public class Tester {

    public static void main(String args[]) throws MalformedURLException, IOException, ParseException {
        WundergroundAPI wu =  new WundergroundAPI("*******60fedd095");

        JSONObject json = wu.historical("San_Francisco", "CA", "20100413");

        System.out.println(json.toString());
        System.out.println();
        //This only returns 1 level. Further .get() calls throw an exception
        System.out.println(json.get("history"));
    }
}

La fonction "historique" en appelle une autre fonction qui retourne un JSONObject

public static JSONObject readJsonFromUrl(URL url) throws MalformedURLException, IOException, ParseException {

    InputStream inputStream = url.openStream();

    try {
        JSONParser parser = new JSONParser();
        BufferedReader buffReader = new BufferedReader(new InputStreamReader(inputStream, Charset.forName("UTF-8")));

        String jsonText = readAll(buffReader);
        JSONObject json = (JSONObject) parser.parse(jsonText);
        return json;
    } finally {
        inputStream.close();
    }
}

OriginalL'auteur Jon.H | 2015-04-24