2012-10-09 2 views
0

저는 두 개의 객체를 직렬화하고 이러한 객체의 배열을 반환하기 위해 JavascriptConverter와 함께 JavascriptSerializer를 사용하고 있습니다. 나는 다음과 같이 약간의 StringBuilder를 사용하여 배열을 만드는거야 :serialize 된 객체의 배열에 대한 json 빌드

JavaScriptSerializer TheSerializer = new JavaScriptSerializer(); 
TheSerializer.RegisterConverters(new JavaScriptConverter[] { new MyConverter()}); 

TheStringBuilder.Append("["); 
TheStringBuilder.Append(TheSerializer.Serialize(FirstObject)); 
TheStringBuilder.Append("],["); 
TheStringBuilder.Append(TheSerializer.Serialize(SecondObject)); 
TheStringBuilder.Append("]"); 

TheJsonToClient = TheStringBuilder.ToString(); 

직렬화 및 사용자 정의 변환 작업 벌금을 코드의 다른 부분에서 내가 사람들을 사용하고 클라이언트에 JSON.parse이 잘 작동하기 때문에 사물.

문제는 반환 문자열을 읽고 해당 클라이언트에서 JSON.parse을 호출 할 때 구문 분석 중에 Unexpected Token 오류가 발생하여 클라이언트에서 deserialization이 실패합니다.

내가 arrray를 deserialize 할 때이 오류를 일으킬 수있는 인코딩에 무슨 문제가 있습니까?

의견을 보내 주셔서 감사합니다.

+0

'내가 뭘 잘못하고 있니?'당신은 json을 형성하기 위해 StringBuilder를 사용하고 있습니다. –

+0

@ L.B JSON을 올바르게 작성하는 한 손으로 JSON을 빌드하는 데는 아무런 문제가 없습니다. – cdhowie

+0

@cdhowie 그게 문제 야. 많은 버그가 열려 있습니다 (질문에서와 같이) –

답변

1

이 줄 :

TheStringBuilder.Append("],["); 

읽어야합니다

TheStringBuilder.Append(","); 

유효한 JSON은 [1,2] 같은 것 - 코드가 [1],[2]를 생성하는 잘못된 JSON이다.

또한 손으로 JSON 배열을 작성하는 대신이 방법을 시도해 보셨습니까?

TheSerializer.Serialize(new[] { FirstObject, SecondObject }); 
+0

좋습니다, 감사합니다! 제공 한 제안은 실제로 코드 수정보다 낫습니다! – frenchie

관련 문제