기억저장고

C# Unity Json 역직렬화 오류 본문

Unity

C# Unity Json 역직렬화 오류

기억해조 2022. 7. 25. 13:07

*상황
-소켓 TCP통신
- Json 데이터 주고받음
- 받은 Json데이터 역직렬화 시 오류 생성

*오류내용
Newtonsoft.Json.JsonReaderException: Additional text encountered after finished reading JSON content: {. Path '', line 1, position 102. 

*오류 코드(이전코드)

    public static T DeserializedToClass<T>(string msg) where T : class
    {
        try
        {
            var myObj = JsonConvert.DeserializeObject<T>(msg));
            return myObj;
        }
        catch (System.Exception e)
        {
            Debug.Log("오류:" + msg);
            Debug.Log($"[메세지 DeserializedToClass 오류 ] : " + e);
            return null;
        }
    }




*해결방법

1. JsonFinialCheck(string msg )함수 작성

2. JsonFinialCheck의 반환값으로 역직렬화 진행

 


[코드]

public static T DeserializedToClass<T>(string msg) where T : class
    {
        try
        {
        	//들어오는 msg값을 JsonFinialCheck(string msg)를 거쳐서 문제해결 후 직렬화 진행
            var myObj = JsonConvert.DeserializeObject<T>(JsonFinialCheck(msg));
            return myObj;
        }
        catch (System.Exception e)
        {
            Debug.Log("오류:" + msg);
            Debug.Log($"[메세지 DeserializedToClass 오류 ] : " + e);
            return null;
        }
    }
    
    //역직렬화 문제해결해주는 함수
    private static string JsonFinialCheck(string msg)
    {
        string final = string.Empty;
        char[] arr = msg.ToCharArray();

        bool bln = true;
        foreach (char item in arr)
        {
            if (bln)
            {
                if (item == '}')
                {
                    final += item.ToString();
                    break;
                }
                else
                {
                    final += item.ToString();
                }
            }
        }


        return final;
    }




*참고
https://itecnote.com/tecnote/c-newtonsoft-json-jsonreaderexception-additional-text-encountered-after-finished-reading-json-content/

 

C# – Newtonsoft.Json.JsonReaderException: Additional text encountered after finished reading JSON content: – iTecNote

I am facing one strange problem in JSON array while receiving from a server, I tried to deserialize it but it says I have created a class and tried to deserialize it into that object but, it says the class is given below. class bundle { public string msgid

itecnote.com

 

Comments