Проблема разбора json.NET с данными Twitter API - PullRequest
5 голосов
/ 12 ноября 2011

Я уже некоторое время успешно использую json.NET в проектах без каких-либо проблем.Прошлой ночью я столкнулся с первым случаем, когда произошел сбой json.NET при попытке проанализировать данные json, полученные из надежного источника: твиттер API.

В частности, этот код вызывает ошибку:

string sCmdStr = String.Format("https://api.twitter.com/1/users/lookup.json?screen_name={0}", sParam);
string strJson = _oauth.APIWebRequest("GET", sCmdStr, null);
JObject jsonDat = JObject.Parse(strJson);

В моем случае строка sParam содержала около 25 числовых идентификаторов твиттера.Вызов API-интерфейса Twitter завершился успешно, но при вызове json.NET Parse произошла следующая ошибка:

"Ошибка чтения JObject из JsonReader. Текущий элемент JsonReader не является объектом: StartArray"

Кто-нибудь еще сталкивался с этим?Кто-нибудь знает способ обойти это?Я нахожусь в тупике, пока не решу это.

1 Ответ

8 голосов
/ 31 января 2012

Я получал точно такую ​​же ошибку и в конце концов понял это.Вместо использования JObject.Parse используйте JArray.Parse.Итак, вот ваш код:

string sCmdStr = String.Format("https://api.twitter.com/1/users/lookup.json?screen_name={0}", sParam);
string strJson = _oauth.APIWebRequest("GET", sCmdStr, null);
JArray jsonDat = JArray.Parse(strJson);

Затем вы можете перебрать массив и создать задание для каждого отдельного твита.

for(int x = 0; x < jsonDat.Count(); x++)
{
     JObject tweet = JObject.Parse(jsonDat[x].toString());
     string tweettext = tweet["text"].toString();
     //whatever else you want to look up
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...