2012-08-15 3 views
0

아주 간단한 일이지만 어떤 이유로 든이 것을 이해할 수 없습니다. 나는 그렇게 보이는 모의 JSON 파일이 있습니다JSON 파일을 구문 분석하고 "유효하지 않은 JSON 프리미티브 : 0 0 0 0"을 얻으려고합니다.

{ 
    "AccountId":"XXXXXXXXX", 
    "UAN":"PE3458234758345", 
    "BillingName":"John Smith", 
    "BillingAddress": { 
    "Address1":"701 First Ave.", 
    "Address2":"test", 
    "City":"Philadelphia", 
    "State":"PA", 
    "Zip:":"19147" 
    }, 
    "ServiceStartDate":"5/1/2012", 
    "PromoCode":"0056", 
    "PartnerCode":"AAL", 
    "MemberNumber":"0000001", 
    "Invoices":[ 
    { 
     "Amount":"113.78", 
     "Date":"6/1/2012", 
     "Usage":"3143" 
    }, 
    { 
     "Amount":"123.56", 
     "Date":"7/1/2012", 
     "Usage":"4561" 
    }, 
    { 
     "Amount":"105.23", 
     "Date":"8/1/2012", 
     "Usage":"5454" 
    } 
    ], 
    "Expected":[ 
    { 
     "AwardCreation":"true", 
     "AwardAmount":"500", 
     "AwardUnits":"usd", 
     "AwardDate":"today()" 
    } 
    ] 
} 

을 그리고 테스트 모형이 실행 될 때마다 달라질 수있는이 같은이에서 동적 객체를 생성 할 필요가 있어요. in this solutio뿐만 아니라 .NET 4.0 System.Web.Helpers을 언급 한 바와 같이 나는 사용자 정의 디시리얼라이저를 시도하고 두 경우 모두 내가 끝낼 :

Invalid JSON primitive: \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0... 

가 현재 내 작업 테스트는 다음과 같습니다

var json = new StringBuilder(); 

     using (var fs = File.Open(@"c:\users\bryan\Desktop\test2.json", FileMode.Open)) 
     { 
      var byteArray = new byte[1024]; 
      var tempString = new UTF8Encoding(true); 

      while (fs.Read(byteArray, 0, byteArray.Length) > 0) 
      { 
       json.Append(tempString.GetString(byteArray)); 
      } 
     } 

     var dynamicObject = Json.Decode(json.ToString()); 

     Assert.IsNotNull(dynamicObject); 

실마리가 없습니다. 형식이라고 생각하십니까? 나는 json 파일에서 모든 것을 제거했다. (하나의 거대한 라인을 의미한다.) 나는 똑같은 것을 얻는다. 이상하게도, Newtonsoft.Json을 사용할 때 오류는 발생하지 않지만 동적 객체는 AccountId 문자열뿐입니다. UTF-8 파일을 읽을 수있는

답변

2

당신의 코드는 같은 잘못 :

  • 시도는
  • 인해의 무시 길이에 추가 0 바이트를 추가로 인해 1024 바이트 경계에서의 절단에 잠재적으로 불완전한 바이트 시퀀스로 변환 마지막 세그먼트의 파일.

StreamReader 또는 다른 내장 메서드를 사용하여 파일에서 문자열을 읽는 것이 좋습니다. 시작 지점은 How to:Read Text from a FileFile.ReadAllText을 참조하십시오.

var dynamicObject = Json.Decode(
    File.ReadAllText(@"c:\users\bryan\Desktop\test2.json")); 
+0

그래, 난 괜찮아 나무를 통해 숲을 놓쳤다. 심야 도움을 주셔서 감사합니다. – BryanGrimes

관련 문제