클라이언트에선 JSON 객체를 만들어서 c# 서버로 보내는데요


JSONObject obj = new JSONObject();  

// 패킷 생성 및 삽입
 obj.put("packet", packet.PACK_CHATMSG.toString());
             
// 채팅 메세지 삽입
obj.put("chat", msgString);


이런식의 제이슨 객체를 만들어서 서버로 보내고 있습니다.


서버에선 이걸 버퍼를 스트링으로 바꿔준후 스트링을 다시 제이슨 객체로 제이슨 객체를 다시 제이슨콜렉션으로 바꿔준후

bufferCount = socket.Receive(buffer);
 if (bufferCount == 0) break;
 string Msgs = ASCIIEncoding.UTF8.GetString(buffer);

byte[] byteimsi = new byte[bufferCount];            // 남은버퍼 없애기용 임시byte
for (int i = 0; i < bufferCount; i++)
{
             byteimsi[i] = buffer[i];
}

 Msgs = ASCIIEncoding.UTF8.GetString(byteimsi);

JsonTextParser parser = new JsonTextParser();
JsonObject obj = parser.Parse(Msgs);
JsonObjectCollection col = (JsonObjectCollection)obj;


아래와 같이 패킷 분석을 하거든요

 // 패킷 분석
switch ((string)col["packet"].GetValue())
{
          case "PACK_CHATMSG" : {

.....

}


근대 여기 케이스문 안에선 채팅 메세지를 받았을경우

콜렉션 객체를 하나 다시 만들어서

 string msg = (string)col["chat"].GetValue();
Console.WriteLine("클라이언트에서 받은 메세지" + msg);

// 전송 데이터 생성
ackCol.Add(new JsonStringValue("ack", "ACK_CHATMSG"));
ackCol.Add(new JsonStringValue("chat", msg));


이걸 ackCol.ToString()으로 쓴다는데 이게 콜렉션 객체라 그런지

클라이언트에서 받은 json객체와 규격(?)이 다르더라고요 같은 값을 넣었을경우


클라이언트에서 받은 json 객체는

"{\"chat\":\"adf\",\"packet\":\"PACK_CHATMSG\"}\n" 의 값을 갖고


ackCol.ToString()을 하면

"{\r\n\t\"ack\": \"ACK_CHATMSG\",\r\n\t\"chat\": \"ASDF\"\r\n}" 이와 같이 돼서


클라이언트에서 해당 값을 받아도 밸류값을 뽑아내지 못하더라고요


어떻게 해야 위와 같이 통일 시킬수있나요?