2012-02-03 6 views
1

안녕 모두를 사용하여 일부 트윗을 역 직렬화 할 수 없습니다. 내 코드가는 NewtonSoft.Json

JToken json = JObject.Parse(ResponseStream.ReadLine()); 

매 tweet마다 "JsonReader에서 JObject를 읽는 동안 오류가 발생했습니다."오류가 발생합니다.

json을 JSONLint에 복사 했으므로 유효합니다. 왜 이런 일이 계속 발생하는지 궁금합니다. 다른 사람이이 오류를 겪었습니까?

답변

0

문제점을 발견했습니다. 때로는 스트림이 빈 문자열을 반환합니다. 따라서 빈 문자열을 구문 분석하면 오류가 발생합니다. 아래에서 보호 방법에 대한 예 :

public static void ProccessTweet(object objMessage) 
    { 
     if(objMessage.ToString() != "") 
     { 
      var json = JObject.Parse(objMessage.ToString()); 
      if (json["retweeted_status"] == null) 
      { 
       var message = ProcessNewTweet(json); 
       Db.Votes.Add(new FNBVote 
       { 
        Message = message, 
        Entry = Db.Entries.Find(message.Entry.EntryId) 
       }); 

       return; 
      } 

      ProcessRetweet(json); 
     } 
    } 
0

예, 최근에 시작되었습니다. 나는 이것이 NewtonSoft.Json의 버그이거나 트위터 API의 변경으로 인해 나쁜 jsons를 보내는 원인이라고 생각합니다. 나는 패킷 포획을하고 그들을 계산하여 기분을 상하게하는 성격을 발견했지만, 나는 잘못된 것을 보지 못했다. 우리는이 버그가 고쳐질 때까지 기다려야한다고 생각합니다.

업데이트 나는 Newtonsoft.Json.dll을 4.3. *로 다운 그레이드했습니다.