无法从JSON数组中检索GeoCode

时间:2016-02-05 01:44:40

标签: java json jackson

我遇到的问题是我的逻辑无法从twitter Feed中检索JSON array中的前两个坐标。

下面是我首先验证节点不为空的逻辑,如果它不为null,那么我尝试从平面检索前两个 lon / lat坐标

问题是它从未真正进入第一个if语句。从而完全省略了这个逻辑。我在这做错了什么?

逻辑

          if(root.path("place").get("bounding_box") != null
                        && root.path("place").path("bounding_box").get("coordinates") != null){
                    lon = root.path("place").path("bounding_box").path("coordinates").get(0).get(0).get(0).textValue();
                    lat = root.path("place").path("bounding_box").path("coordinates").get(0).get(0).get(1).textValue();

                    if(root.path("place").get("full_name") != null) {
                        userlocation = root.path("place").get("full_name").textValue();
                    }
                }

示例JSON字符串

{  
   "created_at":"Fri Feb 05 01:36:27 +0000 2016",
   "id":695420692209111000,
   "id_str":"695420692209111040",
   "text":"RT @Sayhop: When your boyfriend doesn't watch your show  #RealFansGetIt X1 @XFINITY #ad https://t.co/E4H3zO92nV",
   "source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>",
   "truncated":false,
   "in_reply_to_status_id":null,
   "in_reply_to_status_id_str":null,
   "in_reply_to_user_id":null,
   "in_reply_to_user_id_str":null,
   "in_reply_to_screen_name":null,
   "user":{  
      "id":278162142,
      "id_str":"278162142",
      "name":"Alexeia  ♡",
      "screen_name":"_vievelv_",
      "location":null,
      "url":null,
      "description":"Itty Bitty ❤️",
      "protected":false,
      "verified":false,
      "followers_count":1571,
      "friends_count":1246,
      "listed_count":0,
      "favourites_count":344,
      "statuses_count":21194,
      "created_at":"Wed Apr 06 18:46:36 +0000 2011",
      "utc_offset":-18000,
      "time_zone":"Eastern Time (US & Canada)",
      "geo_enabled":true,
      "lang":"en",
      "contributors_enabled":false,
      "is_translator":false,
      "profile_background_color":"642D8B",
      "profile_background_image_url":"http://pbs.twimg.com/profile_background_images/656263432/w1zrzuisccmzjk0qhv5h.jpeg",
      "profile_background_image_url_https":"https://pbs.twimg.com/profile_background_images/656263432/w1zrzuisccmzjk0qhv5h.jpeg",
      "profile_background_tile":true,
      "profile_link_color":"FF00EE",
      "profile_sidebar_border_color":"65B0DA",
      "profile_sidebar_fill_color":"7AC3EE",
      "profile_text_color":"3D1957",
      "profile_use_background_image":true,
      "profile_image_url":"http://pbs.twimg.com/profile_images/652259214774128640/O8LDMd8c_normal.jpg",
      "profile_image_url_https":"https://pbs.twimg.com/profile_images/652259214774128640/O8LDMd8c_normal.jpg",
      "profile_banner_url":"https://pbs.twimg.com/profile_banners/278162142/1441077378",
      "default_profile":false,
      "default_profile_image":false,
      "following":null,
      "follow_request_sent":null,
      "notifications":null
   },
   "geo":null,
   "coordinates":null,
   "place":null,
   "contributors":null,
   "retweeted_status":{  
      "created_at":"Fri Jan 22 20:19:36 +0000 2016",
      "id":690629910960799700,
      "id_str":"690629910960799744",
      "text":"When your boyfriend doesn't watch your show  #RealFansGetIt X1 @XFINITY #ad https://t.co/E4H3zO92nV",
      "source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>",
      "truncated":false,
      "in_reply_to_status_id":null,
      "in_reply_to_status_id_str":null,
      "in_reply_to_user_id":null,
      "in_reply_to_user_id_str":null,
      "in_reply_to_screen_name":null,
      "user":{  
         "id":25011208,
         "id_str":"25011208",
         "name":"Sara Hopkins",
         "screen_name":"Sayhop",
         "location":"Atlanta, GA",
         "url":"http://shortyawards.com/8th/sayhop",
         "description":"never bored || TV host/social media creator ⭐️⭐️⭐️⭐️⭐️ IG/snapchat: sayhop",
         "protected":false,
         "verified":true,
         "followers_count":50761,
         "friends_count":998,
         "listed_count":98,
         "favourites_count":13178,
         "statuses_count":4231,
         "created_at":"Wed Mar 18 02:31:51 +0000 2009",
         "utc_offset":-18000,
         "time_zone":"Eastern Time (US & Canada)",
         "geo_enabled":true,
         "lang":"en",
         "contributors_enabled":false,
         "is_translator":false,
         "profile_background_color":"000000",
         "profile_background_image_url":"http://pbs.twimg.com/profile_background_images/260784476/Twitter1.jpg",
         "profile_background_image_url_https":"https://pbs.twimg.com/profile_background_images/260784476/Twitter1.jpg",
         "profile_background_tile":false,
         "profile_link_color":"51D4C2",
         "profile_sidebar_border_color":"DBCFAD",
         "profile_sidebar_fill_color":"0F0E0B",
         "profile_text_color":"AD4C9E",
         "profile_use_background_image":true,
         "profile_image_url":"http://pbs.twimg.com/profile_images/688163946512007168/CRqMjOgp_normal.jpg",
         "profile_image_url_https":"https://pbs.twimg.com/profile_images/688163946512007168/CRqMjOgp_normal.jpg",
         "profile_banner_url":"https://pbs.twimg.com/profile_banners/25011208/1414548876",
         "default_profile":false,
         "default_profile_image":false,
         "following":null,
         "follow_request_sent":null,
         "notifications":null
      },
      "geo":null,
      "coordinates":null,
      "place":{  
         "id":"5a110d312052166f",
         "url":"https://api.twitter.com/1.1/geo/id/5a110d312052166f.json",
         "place_type":"city",
         "name":"San Francisco",
         "full_name":"San Francisco, CA",
         "country_code":"US",
         "country":"United States",
         "bounding_box":{  
            "type":"Polygon",
            "coordinates":[  
               [  
                  [  
                     -122.514926,
                     37.708075
                  ],
                  [  
                     -122.514926,
                     37.833238
                  ],
                  [  
                     -122.357031,
                     37.833238
                  ],
                  [  
                     -122.357031,
                     37.708075
                  ]
               ]
            ]
         },
         "attributes":{  

         }
      },
      "contributors":null,
      "is_quote_status":false,
      "retweet_count":4276,
      "favorite_count":14129,
      "entities":{  
         "hashtags":[  
            {  
               "text":"RealFansGetIt",
               "indices":[  
                  45,
                  59
               ]
            },
            {  
               "text":"ad",
               "indices":[  
                  72,
                  75
               ]
            }
         ],
         "urls":[  

         ],
         "user_mentions":[  
            {  
               "screen_name":"XFINITY",
               "name":"XFINITY",
               "id":14996251,
               "id_str":"14996251",
               "indices":[  
                  63,
                  71
               ]
            }
         ],
         "symbols":[  

         ],
         "media":[  
            {  
               "id":690629837333999600,
               "id_str":"690629837333999617",
               "indices":[  
                  76,
                  99
               ],
               "media_url":"http://pbs.twimg.com/ext_tw_video_thumb/690629837333999617/pu/img/ofj5PsOGsynefono.jpg",
               "media_url_https":"https://pbs.twimg.com/ext_tw_video_thumb/690629837333999617/pu/img/ofj5PsOGsynefono.jpg",
               "url":"https://t.co/E4H3zO92nV",
               "display_url":"pic.twitter.com/E4H3zO92nV",
               "expanded_url":"http://twitter.com/Sayhop/status/690629910960799744/video/1",
               "type":"photo",
               "sizes":{  
                  "thumb":{  
                     "w":150,
                     "h":150,
                     "resize":"crop"
                  },
                  "medium":{  
                     "w":600,
                     "h":338,
                     "resize":"fit"
                  },
                  "small":{  
                     "w":340,
                     "h":191,
                     "resize":"fit"
                  },
                  "large":{  
                     "w":1024,
                     "h":576,
                     "resize":"fit"
                  }
               }
            }
         ]
      },
      "extended_entities":{  
         "media":[  
            {  
               "id":690629837333999600,
               "id_str":"690629837333999617",
               "indices":[  
                  76,
                  99
               ],
               "media_url":"http://pbs.twimg.com/ext_tw_video_thumb/690629837333999617/pu/img/ofj5PsOGsynefono.jpg",
               "media_url_https":"https://pbs.twimg.com/ext_tw_video_thumb/690629837333999617/pu/img/ofj5PsOGsynefono.jpg",
               "url":"https://t.co/E4H3zO92nV",
               "display_url":"pic.twitter.com/E4H3zO92nV",
               "expanded_url":"http://twitter.com/Sayhop/status/690629910960799744/video/1",
               "type":"video",
               "sizes":{  
                  "thumb":{  
                     "w":150,
                     "h":150,
                     "resize":"crop"
                  },
                  "medium":{  
                     "w":600,
                     "h":338,
                     "resize":"fit"
                  },
                  "small":{  
                     "w":340,
                     "h":191,
                     "resize":"fit"
                  },
                  "large":{  
                     "w":1024,
                     "h":576,
                     "resize":"fit"
                  }
               },
               "video_info":{  
                  "aspect_ratio":[  
                     16,
                     9
                  ],
                  "duration_millis":11233,
                  "variants":[  
                     {  
                        "bitrate":2176000,
                        "content_type":"video/mp4",
                        "url":"https://video.twimg.com/ext_tw_video/690629837333999617/pu/vid/1280x720/OY7P8akLAqM_C2J1.mp4"
                     },
                     {  
                        "bitrate":320000,
                        "content_type":"video/mp4",
                        "url":"https://video.twimg.com/ext_tw_video/690629837333999617/pu/vid/320x180/HlqkHHrC7SK6cgR8.mp4"
                     },
                     {  
                        "bitrate":832000,
                        "content_type":"video/webm",
                        "url":"https://video.twimg.com/ext_tw_video/690629837333999617/pu/vid/640x360/FfLYyLagrUn8VGgy.webm"
                     },
                     {  
                        "bitrate":832000,
                        "content_type":"video/mp4",
                        "url":"https://video.twimg.com/ext_tw_video/690629837333999617/pu/vid/640x360/FfLYyLagrUn8VGgy.mp4"
                     },
                     {  
                        "content_type":"application/x-mpegURL",
                        "url":"https://video.twimg.com/ext_tw_video/690629837333999617/pu/pl/cXSu_jFCOj5Wcte5.m3u8"
                     },
                     {  
                        "content_type":"application/dash+xml",
                        "url":"https://video.twimg.com/ext_tw_video/690629837333999617/pu/pl/cXSu_jFCOj5Wcte5.mpd"
                     }
                  ]
               }
            }
         ]
      },
      "favorited":false,
      "retweeted":false,
      "possibly_sensitive":false,
      "filter_level":"low",
      "lang":"en"
   },
   "is_quote_status":false,
   "retweet_count":0,
   "favorite_count":0,
   "entities":{  
      "hashtags":[  
         {  
            "text":"RealFansGetIt",
            "indices":[  
               57,
               71
            ]
         },
         {  
            "text":"ad",
            "indices":[  
               84,
               87
            ]
         }
      ],
      "urls":[  

      ],
      "user_mentions":[  
         {  
            "screen_name":"Sayhop",
            "name":"Sara Hopkins",
            "id":25011208,
            "id_str":"25011208",
            "indices":[  
               3,
               10
            ]
         },
         {  
            "screen_name":"XFINITY",
            "name":"XFINITY",
            "id":14996251,
            "id_str":"14996251",
            "indices":[  
               75,
               83
            ]
         }
      ],
      "symbols":[  

      ],
      "media":[  
         {  
            "id":690629837333999600,
            "id_str":"690629837333999617",
            "indices":[  
               88,
               111
            ],
            "media_url":"http://pbs.twimg.com/ext_tw_video_thumb/690629837333999617/pu/img/ofj5PsOGsynefono.jpg",
            "media_url_https":"https://pbs.twimg.com/ext_tw_video_thumb/690629837333999617/pu/img/ofj5PsOGsynefono.jpg",
            "url":"https://t.co/E4H3zO92nV",
            "display_url":"pic.twitter.com/E4H3zO92nV",
            "expanded_url":"http://twitter.com/Sayhop/status/690629910960799744/video/1",
            "type":"photo",
            "sizes":{  
               "thumb":{  
                  "w":150,
                  "h":150,
                  "resize":"crop"
               },
               "medium":{  
                  "w":600,
                  "h":338,
                  "resize":"fit"
               },
               "small":{  
                  "w":340,
                  "h":191,
                  "resize":"fit"
               },
               "large":{  
                  "w":1024,
                  "h":576,
                  "resize":"fit"
               }
            },
            "source_status_id":690629910960799700,
            "source_status_id_str":"690629910960799744",
            "source_user_id":25011208,
            "source_user_id_str":"25011208"
         }
      ]
   },
   "extended_entities":{  
      "media":[  
         {  
            "id":690629837333999600,
            "id_str":"690629837333999617",
            "indices":[  
               88,
               111
            ],
            "media_url":"http://pbs.twimg.com/ext_tw_video_thumb/690629837333999617/pu/img/ofj5PsOGsynefono.jpg",
            "media_url_https":"https://pbs.twimg.com/ext_tw_video_thumb/690629837333999617/pu/img/ofj5PsOGsynefono.jpg",
            "url":"https://t.co/E4H3zO92nV",
            "display_url":"pic.twitter.com/E4H3zO92nV",
            "expanded_url":"http://twitter.com/Sayhop/status/690629910960799744/video/1",
            "type":"video",
            "sizes":{  
               "thumb":{  
                  "w":150,
                  "h":150,
                  "resize":"crop"
               },
               "medium":{  
                  "w":600,
                  "h":338,
                  "resize":"fit"
               },
               "small":{  
                  "w":340,
                  "h":191,
                  "resize":"fit"
               },
               "large":{  
                  "w":1024,
                  "h":576,
                  "resize":"fit"
               }
            },
            "source_status_id":690629910960799700,
            "source_status_id_str":"690629910960799744",
            "source_user_id":25011208,
            "source_user_id_str":"25011208",
            "video_info":{  
               "aspect_ratio":[  
                  16,
                  9
               ],
               "duration_millis":11233,
               "variants":[  
                  {  
                     "bitrate":2176000,
                     "content_type":"video/mp4",
                     "url":"https://video.twimg.com/ext_tw_video/690629837333999617/pu/vid/1280x720/OY7P8akLAqM_C2J1.mp4"
                  },
                  {  
                     "bitrate":320000,
                     "content_type":"video/mp4",
                     "url":"https://video.twimg.com/ext_tw_video/690629837333999617/pu/vid/320x180/HlqkHHrC7SK6cgR8.mp4"
                  },
                  {  
                     "bitrate":832000,
                     "content_type":"video/webm",
                     "url":"https://video.twimg.com/ext_tw_video/690629837333999617/pu/vid/640x360/FfLYyLagrUn8VGgy.webm"
                  },
                  {  
                     "bitrate":832000,
                     "content_type":"video/mp4",
                     "url":"https://video.twimg.com/ext_tw_video/690629837333999617/pu/vid/640x360/FfLYyLagrUn8VGgy.mp4"
                  },
                  {  
                     "content_type":"application/x-mpegURL",
                     "url":"https://video.twimg.com/ext_tw_video/690629837333999617/pu/pl/cXSu_jFCOj5Wcte5.m3u8"
                  },
                  {  
                     "content_type":"application/dash+xml",
                     "url":"https://video.twimg.com/ext_tw_video/690629837333999617/pu/pl/cXSu_jFCOj5Wcte5.mpd"
                  }
               ]
            }
         }
      ]
   },
   "favorited":false,
   "retweeted":false,
   "possibly_sensitive":false,
   "filter_level":"low",
   "lang":"en",
   "timestamp_ms":"1454636187971"
}

1 个答案:

答案 0 :(得分:1)

在此JSON中,有两个名为place的键。 第一个键的值为null。 您的代码只是检索第一个place的值。因为此键的值为null。它没有执行逻辑。

下一个place密钥位于retweeted_status块下。 因此,如果您想运行逻辑,则应首先使用retweeted_status密钥。

E.g。 :

node.path("retweeted_status").path("place").get("bounding_box")