How to parse nested JSON from Map<String, Object>
<p>I am using the below to map a json response to a Map</p>

<pre><code> Map&lt;String, Object&gt; apiResponse = restTemplate.postForObject("https://maps.googleapis.com/maps/api/geocode/json?address="+defaultLocation+"&amp;key="+API_KEY, httpEntity, Map.class, Collections.EMPTY_MAP);
</code></pre>

<p>I can use the below to output the entire JSON to a string</p>

<pre><code>    String jsonResponse = apiResponse.get("results").toString();
</code></pre>

<p>However, what I want to get is a nested value which is <code>results-&gt;geometry-&gt;location</code></p>

<p>I have tried a number of solution with <code>JSONArrays, JSONObjects, Substring</code> but can't get them to work.</p>

<p>Response JSON:</p>

<pre><code>{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "Auckland",
               "short_name" : "Auckland",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Auckland",
               "short_name" : "Auckland",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "Auckland",
               "short_name" : "Auckland",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "New Zealand",
               "short_name" : "NZ",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "Auckland, New Zealand",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : -36.660571,
                  "lng" : 175.287137
               },
               "southwest" : {
                  "lat" : -37.065475,
                  "lng" : 174.4438016
               }
            },
            "location" : {
               "lat" : -36.8484597,
               "lng" : 174.7633315
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : -36.660571,
                  "lng" : 175.287137
               },
               "southwest" : {
                  "lat" : -37.065475,
                  "lng" : 174.4438016
               }
            }
         },
         "place_id" : "ChIJ--acWvtHDW0RF5miQ2HvAAU",
         "types" : [ "locality", "political" ]
      },
      {
         "address_components" : [
            {
               "long_name" : "Auckland",
               "short_name" : "Auckland",
               "types" : [ "political", "sublocality", "sublocality_level_1" ]
            },
            {
               "long_name" : "Auckland",
               "short_name" : "Auckland",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Auckland",
               "short_name" : "Auckland",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "Auckland",
               "short_name" : "Auckland",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "New Zealand",
               "short_name" : "NZ",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "1010",
               "short_name" : "1010",
               "types" : [ "postal_code" ]
            }
         ],
         "formatted_address" : "Auckland, 1010, New Zealand",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : -36.8364659,
                  "lng" : 174.7838398
               },
               "southwest" : {
                  "lat" : -36.8621041,
                  "lng" : 174.7503805
               }
            },
            "location" : {
               "lat" : -36.8484597,
               "lng" : 174.7633315
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : -36.8364659,
                  "lng" : 174.7838398
               },
               "southwest" : {
                  "lat" : -36.8621041,
                  "lng" : 174.7503805
               }
            }
         },
         "place_id" : "ChIJuZqpSPtHDW0R4LOiQ2HvAAU",
         "types" : [ "political", "sublocality", "sublocality_level_1" ]
      }
   ],
   "status" : "OK"
}
</code></pre>

<p>Any help would be greatly appreciated.</p>