2016-02-05 100 views
0

我遇到了一个问题,我的逻辑无法从twitter源中检索JSON array中的前两个坐标。无法从JSON数组中检索GeoCode

下面是我对第一次验证该节点不为空,如果它的逻辑不为空,然后我试图从平面检索前两个经度/纬度坐标

问题是它从来没有真正进入第一个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" 
} 
+0

使用像'jackson'等任何库?请参阅[这里](http://www.journaldev.com/2324/jackson-json-processing-api-in-java-example-tutorial)作为检索数据的示例。 – Rao

+0

我正在使用杰克逊,忘了提到在原帖 – user2100493

+0

这个问题也没有检索数据,验证数据。我非常肯定我的检索数据的说法仍然正确。我不知道杰克逊找不到物体时究竟抛出了什么。 – user2100493

回答

1

在此JSON,有两个键与名称place。 第一个键值为null。 您的代码只是检索第一个place的值。并且由于此密钥的值是null。它不执行逻辑。

下一个place键属于retweeted_status块。 所以,如果你想运行你的逻辑,那么你应该先使用retweeted_status键。

E.g. :

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

圣牛,非常感谢你,不能相信你发现完全错过了它。谢谢! – user2100493

+0

我是否也正确地从JSON数组中检索“bounding_box”的数据?它似乎是一个三重嵌套数组。 – user2100493