2013-05-15 2 views
2

gson 라이브러리를 사용하여 일부 클래스를 JSON으로 변환하고 소켓으로 보내고 있습니다.소켓에서 JSON 읽기/쓰기

현재 문자열로 변환하고 문자열을 BufferedWriter을 사용하여 소켓에 쓸 수 있습니다. 난 BufferedReader 문자열을 사용하여 다른 쪽 끝을 읽을 수 있으며 JSON 개체 문자열을 구문 분석합니다. JSON 개체 앞에 먼저 JSON 문자열 길이를 파이프 아래로 보내야합니다.

먼저 JSON 스트림 판독기/기록기를 사용하여 문자열을 읽고 쓰는 것을 피하는 좀 더 효율적인 방법이 있어야한다고 생각합니다. 직접 스트림을 읽고 쓰는 방법이 있다고 가정하면 잘못 작성된 JSON이 전송되는 경우를 어떻게 처리 할 수 ​​있습니까?

이것을 쓰고 소켓에서 이것을 읽는 가장 좋은 방법은 무엇입니까?

이것은 학습 연습이므로 작동하는 무언가를 생각해 낼 수는 있지만 "적절한"해결책을 찾고 있습니다.

+0

왜 json 문자열의 길이를 먼저 보내야합니까? http://stackoverflow.com/questions/444380/is-there-a-streaming-api-for-json –

+0

@MiserableVariable 나는 현재 구현을 위해 문자열의 길이를 먼저 보내야한다는 것을 의미했다. – Cheetah

답변

0

Json 개체 (메시지)에 대한 새 프로토콜을 개발하는 것이 좋습니다.

&&DeterminedBeginChars&&JSON 메시지&&DeterminedEndChars&&

소켓 이상이 존재 : 뭔가를 할 수

. 이렇게하면 Json 메시지가 전송되는 시점과 그 길이를 알 수 있습니다. 이렇게하면 String으로 파싱을 피할 수 있습니다.

+0

시작 문자는 항상'{'이고 끝 문자는 항상'}'입니다. – Cheetah

+0

네, 그냥 의사 코드 .. –