2012-02-12 14 views
0
以下

さえずりTwitterの検索APIエンティティ

{ 
"created_at": "Sat, 11 Feb 2012 06:38:28 +0000", 
"entities": { 
    "hashtags": [ 
    { 
     "text": "Shubhdin", 
     "indices": [ 
     9, 
     18 
     ] 
    } 
    ], 
    "urls": [], 
    "user_mentions": [ 
    { 
     "screen_name": "SAMdLaw", 
     "name": "Sabyasachi Mohapatra", 
     "id": 104420398, 
     "id_str": "104420398", 
     "indices": [ 
     0, 
     8 
     ] 
    } 
    ] 
}, 
"from_user": "nilayshah80", 
"from_user_id": 213599118, 
"from_user_id_str": "213599118", 
"from_user_name": "Nilay Shah", 
"geo": { 
    "coordinates": [ 
    18.6003, 
    73.825 
    ], 
    "type": "Point" 
}, 
"id": 168222351106899968, 
"id_str": "168222351106899968", 
"iso_language_code": "in", 
"metadata": { 
    "result_type": "recent" 
}, 
"profile_image_url": "http://a2.twimg.com/profile_images/1528184590/IMG_0465_normal.JPG", 
"profile_image_url_https": "https://si0.twimg.com/profile_images/1528184590/IMG_0465_normal.JPG", 
"source": "<a href="http://twabbit.wordpress.com/" rel="nofollow">twabbit</a>", 
"text": "@SAMdLaw #Shubhdin mitra", 
"to_user": "SAMdLaw", 
"to_user_id": 104420398, 
"to_user_id_str": "104420398", 
"to_user_name": "Sabyasachi Mohapatra", 
"in_reply_to_status_id": 168219865197461505, 
"in_reply_to_status_id_str": "168219865197461505" 
}, 
{ 
"created_at": "Sun, 12 Feb 2012 01:54:07 +0000", 
"entities": { 
    "hashtags": [ 
    { 
     "text": "IWIllAlwaysLoveYou", 
     "indices": [ 
     88, 
     107 
     ] 
    } 
    ], 
    "urls": [], 
    "user_mentions": [], 
    "media": [ 
    { 
     "id": 168513175187238912, 
     "id_str": "168513175187238912", 
     "indices": [ 
     108, 
     128 
     ], 
     "media_url": "http://p.twimg.com/Alat1wsCMAAh-wE.jpg", 
     "media_url_https": "https://p.twimg.com/Alat1wsCMAAh-wE.jpg", 
     "url": "http://t.co/dRc4dXH3", 
     "display_url": "pic.twitter.com/dRc4dXH3", 
     "expanded_url": "http://twitter.com/RIPWhitneyH/status/168513175183044608/photo/1", 
     "type": "photo", 
     "sizes": { 
     "orig": { 
      "w": 395, 
      "h": 594, 
      "resize": "fit" 
     }, 
     "large": { 
      "w": 395, 
      "h": 594, 
      "resize": "fit" 
     }, 
     "thumb": { 
      "w": 150, 
      "h": 150, 
      "resize": "crop" 
     }, 
     "small": { 
      "w": 340, 
      "h": 511, 
      "resize": "fit" 
     }, 
     "medium": { 
      "w": 395, 
      "h": 594, 
      "resize": "fit" 
     } 
     } 
    } 
    ] 
}, 
"from_user": "RIPWhitneyH", 
"from_user_id": 19319043, 
"from_user_id_str": "19319043", 
"from_user_name": "RIP Whitney Houston", 
"geo": null, 
"id": 168513175183044608, 
"id_str": "168513175183044608", 
"iso_language_code": "en", 
"metadata": { 
    "recent_retweets": 8, 
    "result_type": "popular" 
}, 
"profile_image_url": "http://a2.twimg.com/profile_images/1820957590/images__13__normal.jpg", 
"profile_image_url_https": "https://si0.twimg.com/profile_images/1820957590/images__13__normal.jpg", 
"source": "<a href="http://twitter.com/">web</a>", 
"text": "R-T if you think that the Grammy's should organize an \"R.I.P. Whitney Houston\" tribute. #IWIllAlwaysLoveYou http://t.co/dRc4dXH3", 
"to_user": null, 
"to_user_id": null, 
"to_user_id_str": null, 
"to_user_name": null 
}, 

から私の返されたJSONあなたは上記の2では使用できませんエンティティの下にメディアに気づいた場合は、私がしようとしたときは、 、私のエンティティ/ URLの場合はnull参照エラー

MediaUrl = (from user in tweet["entities"]["media"] 
select new mediaUrl 
{ 
     shortUrl = (string)user["url"], 
     longUrl = (string)user["expanded_url"], 
     url = (string)user["media_url"], 
     start = user["indices"][0].ToString(), 
     end = user["indices"][1].ToString(), 
     mediaType = (string)user["type"], 
    }).ToList() 

同一コードの仕事を与えハッシュタグとメディアのためではなく、言及スニペットの下に呼び出します。

はまた、この試みた - >Get JSON object node をまだnull参照の例外を取得:(

緊急の助けが必要最初のつぶやきで、事前

+0

ハンドラをJsonSerializerSettingsのエラーイベントにアタッチすると、より有用な情報が得られますか? –

+0

ハンドラでは試していません。ここで確認して報告します。ありがとう。 –

答えて

0

最後に動作しました。適切な解決策ではないが、私のために働く。

私はMediaを解析する別の方法を作成しました。渡されたEntityを文字列として返し、そのメソッドでEntityString.Contains Mediaをチェックします。はいの場合、メディアを解析してjson elseがnullを返しました。下のスニペットを参照してください。

 if (Entities != string.Empty) 
     { 
      if (Entities.Contains("\"media\":")) 
      { 
       JObject searchResult = JObject.Parse(Entities); 
       returnMedia = (from user in searchResult["media"] 
           select new mediaUrl 
           { 
            shortUrl = (string)user["url"], 
            longUrl = (string)user["expanded_url"], 
            url = (string)user["media_url"], 
            start = user["indices"][0].ToString(), 
            end = user["indices"][1].ToString(), 
            mediaType = (string)user["type"], 
           }).ToList(); 
      } 
     } 

これは私に役立ちます。より良い解決策があれば教えてください。

0

でおかげで、entitiesオブジェクトはmedia性質を持っているので、評価するときにしません。そのコードがnull referenにクエリを行うためArgumentNullExceptionがスローされますどの

MediaUrl = (from user in (IEnumerable<JToken>)null 
select new mediaUrl 
{ 
     shortUrl = (string)user["url"], 
     longUrl = (string)user["expanded_url"], 
     url = (string)user["media_url"], 
     start = user["indices"][0].ToString(), 
     end = user["indices"][1].ToString(), 
     mediaType = (string)user["type"], 
    }).ToList() 

:最初のつぶやきは、あなたのコードはに相当しますCEコレクション。

+0

まだ私は取得していません。 nullで試してみると、ArgumentNullExceptionが返ってきますし、2番目のツイートでもうまくいきません。二番目のつぶやきは、メディアを渡す方法です。 –

+0

問題は、最初のツイートにあります。**は2番目のツイートではありません。これにより、コードでnull参照例外がスローされます。最初のツイートでは、オブジェクト 'object'に' media'プロパティがないので、 'tweet [" entities "] [" media "]'はnullを返します** **空のコレクションではないからです。 jsonから最初のつぶやきを削除してテストしてみてください。あなたのコードは例外をスローしません。 –

+0

はい、最初に削除してから動作します。しかし、私の問題はツイッターからです、私はこの種のつぶやきだけを受け取ります。 –

関連する問題