2012-05-25 4 views
1

내가 문자열 형식으로 서버에서 JSON을 받고 있어요 나는 내가 그 텍스트 파일을 읽고 있어요 그리고JSON 예외

를 텍스트 파일에 저장하고 서버에 다시 제공하지만 오전를 던지고, 구문 분석 거기 개체로 다시 구문 분석 할 수 없습니다. 이스케이프 문자열로 인해 문제가 발생하거나 알 수 없기 때문일 수 있습니다.

제안하십시오, 나는 C#을 사용하고 Newtonsoft의 JSON.NET있어 여기

는 샘플은 다음과 같습니다

문자열 서버로부터 수신 지역 txt 파일

{"data":"[{\"MenuId\":483,\"Name\":\"Nikhil menu\",\"Desc\":\"test\",\"ASAP\":\"T\",\"LT\":\"T\",\"FO\":\"T\",\"catList\":[{\"CatId\":5132,\"CatName\":\"Cate00\",\"Desc\":\"test\",\"P1\":{\"Id\":1,\"Name\":\"SML\"},\"P2\":{\"Id\":2,\"Name\":\"MED\"},\"P3\":null,\"P4\":null,\"P5\":null,\"P6\":null,\"CatType\":\"Normal\",\"ItemList\":[{\"Id\":38190,\"Name\":\"XXX\",\"Desc\":\"tesdt\",\"MinQ\":1,\"MaxQ\":99,\"MinP\":0.0,\"MaxP\":0.0,\"P1\":100.0,\"P2\":200.0,\"P3\":-99.0,\"P4\":-99.0,\"P5\":-99.0,\"P6\":-99.0,\"Img\":\"\",\"Icon1\":null,\"Icon2\":null,\"Icon3\":null,\"Icon4\":null,\"OpenOn\":{\"Mon\":\"T\",\"Tue\":\"T\",\"Wed\":\"T\",\"Thu\":\"T\",\"Fri\":\"T\",\"Sat\":\"T\",\"Sun\":\"T\"},\"SpecialOffer\":null,\"AddOnList\":[],\"ItemModList\":[]}]}]}]","message":"Processed Successfully","serviceName":"CreateCache","serviceStatus":"S"} 

문자열 후이 저장 같은 로컬 텍스트 파일을 서버에서 읽는 것

{"data":"[{\"MenuId\":483,\"Name\":\"Nikhil menu\",\"Desc\":\"test\",\"ASAP\":\"T\",\"LT\":\"T\",\"FO\":\"T\",\"catList\":[{\"CatId\":5132,\"CatName\":\"Cate00\",\"Desc\":\"test\",\"P1\":{\"Id\":1,\"Name\":\"SML\"},\"P2\":{\"Id\":2,\"Name\":\"MED\"},\"P3\":null,\"P4\":null,\"P5\":null,\"P6\":null,\"CatType\":\"Normal\",\"ItemList\":[{\"Id\":38190,\"Name\":\"XXX\",\"Desc\":\"tesdt\",\"MinQ\":1,\"MaxQ\":99,\"MinP\":0.0,\"MaxP\":0.0,\"P1\":100.0,\"P2\":200.0,\"P3\":-99.0,\"P4\":-99.0,\"P5\":-99.0,\"P6\":-99.0,\"Img\":\"\",\"Icon1\":null,\"Icon2\":null,\"Icon3\":null,\"Icon4\":null,\"OpenOn\":{\"Mon\":\"T\",\"Tue\":\"T\",\"Wed\":\"T\",\"Thu\":\"T\",\"Fri\":\"T\",\"Sat\":\"T\",\"Sun\":\"T\"},\"SpecialOffer\":null,\"AddOnList\":[],\"ItemModList\":[]}]}]}]","message":"Processed Successfully","serviceName":"CreateCache","serviceStatus":"S"} 

I가 내가 서버에 다시 보내하는 데 사용하는 다른 클래스의 객체를 추가 한 후 얻을 내가 서버에서이 문자열을 얻을 문자열

{"data":"[{\"MenuId\":483,\"Name\":\"Nikhil menu\",\"Desc\":\"test\",\"ASAP\":\"T\",\"LT\":\"T\",\"FO\":\"T\",\"catList\":[{\"CatId\":5132,\"CatName\":\"Cate00\",\"Desc\":\"test\",\"P1\":{\"Id\":1,\"Name\":\"SML\"},\"P2\":{\"Id\":2,\"Name\":\"MED\"},\"P3\":null,\"P4\":null,\"P5\":null,\"P6\":null,\"CatType\":\"Normal\",\"ItemList\":[{\"Id\":38190,\"Name\":\"XXX\",\"Desc\":\"tesdt\",\"MinQ\":1,\"MaxQ\":99,\"MinP\":0.0,\"MaxP\":0.0,\"P1\":100.0,\"P2\":200.0,\"P3\":-99.0,\"P4\":-99.0,\"P5\":-99.0,\"P6\":-99.0,\"Img\":\"\",\"Icon1\":null,\"Icon2\":null,\"Icon3\":null,\"Icon4\":null,\"OpenOn\":{\"Mon\":\"T\",\"Tue\":\"T\",\"Wed\":\"T\",\"Thu\":\"T\",\"Fri\":\"T\",\"Sat\":\"T\",\"Sun\":\"T\"},\"SpecialOffer\":null,\"AddOnList\":[],\"ItemModList\":[]}]}]}]","message":"Processed Successfully","serviceName":"CreateCache","serviceStatus":"S"} 

나는

을 목록으로이 문자열 파일을 구문 분석 할 수 없습니다입니다

나는, 감사

+4

제목에 언급 된 예외가 있습니다 - 예외는 무엇입니까? –

+1

유효한 JSON 인 http://jsonlint.com/에 따르면. 파서가 JSON 용 인코딩 스키마 (예 : UTF-8)를 적용하고 해당 스키마로 읽기/쓰기/전송하고 있습니까? 오류 텍스트 란 무엇입니까? – JAAulde

+0

"obj"의 모든 회원이 공개되었거나 일부 보호를 받았습니까? –

답변

0

문제는 서버의 JSON.NET 라이브러리 버전에있었습니다. 한 서버에서 3.5이었고 다른 하나는 4.5였습니다. 너의 모든지지를 위해 모두 고맙다.

1

내가 틀릴 수도를

JObject jObject = JObject.Parse(obj.cacheInfo.cData); 
JToken jT = jObject["data"]; 
List<Menu> lMenu = JsonConvert.DeserializeObject<List<Menu>>(jT.ToString()); 

JObject jObject = JObject.Parse(obj.cacheInfo.cData); 
JObject jObject = JObject.Parse(jObject["data"].ToString()); 

도움이 할 것

을 시도,하지만 당신은 Menu의 컬렉션으로 수용 시도 배열? Json.NET이 T의 JavaScript 배열을 List<T>으로 자동 변환하는지 잘 모르겠습니다. 시도해보십시오.

List<Menu> lMenu = JsonConvert.DeserializeObject<Menu[]>(jT.ToString()).ToList(); 
+0

리스트에서 비 직렬화되어 있습니다.

1Mayur

+0

JavaScript는'List '를 기본적으로 지원하지 않습니다. 즉,'List '에서 직렬화되었지만 그것이 반드시' 'List '에 직렬화하십시오. 'T []'해봤 니? – Richard

+0

Thnx ... 지금이 방법을 사용 중입니다. :) – 1Mayur

0

속성이 공개되어 있는지 확인하십시오. deserializing 클래스에 기본 생성자가 있는지 확인하십시오. 클래스의 배열 - 구현 방법은 무엇입니까? 그리고 네, 예외는 무엇입니까?

관련 문제