2011-12-26 3 views
4

Я пытаюсь загрузить JSON-файл на веб-сайте с помощью C# и Json.NETЗагрузка файла JSON, содержащий JSON в скобках

Однако, я бегу в проблему, когда он работает, потому что все это JSON в [].

Вот JSON:

[{"embed_count":"16","name":"live_user_catreina","stream_count":"133","category":"gaming","format":"live","channel_count":272,"title":"SWTOR - Sith Marauder - L42 - Belsavis - The Fatman","featured":true,"site_count":"117","abuse_reported":false,"channel":{"image_url_large":"http://static-cdn.jtvnw.net/jtv_user_pictures/catreina-profile_image-2c63d1c5b60987da-300x300.jpeg","channel_url":"http://www.justin.tv/catreina","category_title":"Gaming","screen_cap_url_large":"http://static-cdn.jtvnw.net/previews/live_user_catreina-320x240.jpg","mature":null,"subcategory":null,"category":"gaming","image_url_medium":"http://static-cdn.jtvnw.net/jtv_user_pictures/catreina-profile_image-2c63d1c5b60987da-150x150.jpeg","subcategory_title":null,"status":"SWTOR - Sith Marauder - L42 - Belsavis - The Fatman","screen_cap_url_medium":"http://static-cdn.jtvnw.net/previews/live_user_catreina-150x113.jpg","image_url_small":"http://static-cdn.jtvnw.net/jtv_user_pictures/catreina-profile_image-2c63d1c5b60987da-70x70.jpeg","timezone":"US/Eastern","screen_cap_url_small":"http://static-cdn.jtvnw.net/previews/live_user_catreina-70x53.jpg","id":5895485,"views_count":"6142420","embed_enabled":true,"embed_code":" <object type=\"application/x-shockwave-flash\" height=\"295\" width=\"353\" id=\"live_embed_player_flash\" data=\"http://www.justin.tv/widgets/live_embed_player.swf?channel=catreina\" bgcolor=\"#000000\"><param name=\"allowFullScreen\" value=\"true\" /><param name=\"allowscriptaccess\" value=\"always\" /><param name=\"movie\" value=\"http://www.justin.tv/widgets/live_embed_player.swf\" /><param name=\"flashvars\" value=\"start_volume=25&channel=catreina&auto_play=false\" /></object>\n","producer":true,"image_url_tiny":"http://static-cdn.jtvnw.net/jtv_user_pictures/catreina-profile_image-2c63d1c5b60987da-50x50.jpeg","image_url_huge":"http://static-cdn.jtvnw.net/jtv_user_pictures/catreina-profile_image-2c63d1c5b60987da-600x600.jpeg","language":"en","tags":"games gaming lord lotro mmo mmorpg of online pc rings rpg sc2 scii starcraft starcraft2 the vindictus warcraft wow","login":"catreina","screen_cap_url_huge":"http://static-cdn.jtvnw.net/previews/live_user_catreina-630x473.jpg","title":"Gaming With Catreina"},"video_height":720,"language":"en","video_bitrate":1987.1328125,"id":"2309110144","meta_game":"Star Wars: The Old Republic","broadcaster":"fme","broadcast_part":4,"audio_codec":"uncompressed","up_time":"Mon Dec 26 00:06:03 2011","video_width":1280,"geo":"US","channel_view_count":6133751,"channel_subscription":false,"embed_enabled":true,"stream_type":"live","video_codec":"AVC"}] 

Я стараюсь, чтобы загрузить его с этим кодом:

class Program 
    { 
     static void Main(string[] args) 
     { 
      WebClient webclient = new WebClient(); 
      var data = webclient.DownloadString("http://api.justin.tv/api/stream/list.json?channel=catreina"); 
      JObject jo = JObject.Parse(data); 
      Console.WriteLine("Embed Count: " + jo["embed_count"]); 
      Console.ReadLine(); 
     } 
    } 

Но это, очевидно, дает мне эту ошибку

Необработанное исключение: System.Exception : Ошибка чтения JObject из JsonReader. Текущий элемент JsonReader - это не объект: StartArray

Как загрузить JSON с помощью [], а затем проанализировать значения?

+0

Существует также ссылка, которую вы можете захотеть взглянуть на что может объяснить различные способы для чтения в формате JSON с использованием C# http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2010/08/22 /using-c-4.0-and-dynamic-to-parse-json.aspx – MethodMan

ответ

10

Когда в JSON используется [], это означает, что массив .

Используйте JArray вместо JObject.

WebClient webclient = new WebClient(); 
var data = webclient.DownloadString("http://api.justin.tv/api/stream/list.json?channel=catreina"); 
JArray ja = JArray.Parse(data); 
Console.WriteLine("Embed Count: " + ja[0]["embed_count"]); 
Console.ReadLine(); 
+0

Это странно, я вполне уверен, что я попытался JArray вместо JObject, когда я пытался понять это, но он тоже не работал, но теперь он это делает. Раньше было что-то неправильно. Спасибо за помощь! – user1104783

+0

@ user1104783 - Обратите внимание, что я использовал 'ja [0]' для доступа к первому 'JObject' в' JArray'. – Oded

+0

Последний вопрос, что, если массив пуст? Как я могу поймать эту ошибку? Когда это empy, файл просто [] – user1104783

Смежные вопросы