developer tip

.NET 4에는 기본 제공 JSON 직렬 변환기 / 역 직렬 변환기가 있습니까?

optionbox 2020. 12. 9. 08:04
반응형

.NET 4에는 기본 제공 JSON 직렬 변환기 / 역 직렬 변환기가 있습니까?


.NET 4에는 JSON 데이터를 직렬화 / 해제하는 클래스가 있습니까?

  • JSON.NET 과 같은 타사 라이브러리가 있다는 것을 알고 있지만 .NET에 바로 내장 된 것을 찾고 있습니다.

  • MSDN 에서 데이터 계약찾았 지만 Winforms 또는 WPF가 아닌 WCF 용입니다.


DataContractJsonSerializer 클래스는 원하는 곳 어디에서나 사용할 수 있으며 .net 클래스이며 WCF로 제한되지 않습니다. 사용 방법에 대한 자세한 정보는 여기여기 .


있다 JavaScriptSerializer의 클래스가 (당신은 참조 할 필요가 있지만, System.Web.Extensions윈폼 / WPF 응용 프로그램에서 완벽하게 정상적으로 조립 클래스 작품). 또한 DataContractJsonSerializer 클래스가 WCF 용으로 설계된 경우에도 클라이언트 응용 프로그램에서 제대로 작동합니다.


JSON을 직렬화 / 비 직렬화하려면이 일반 클래스를 사용하십시오. 다음과 같이 복잡한 데이터 구조를 쉽게 직렬화 할 수 있습니다.

Dictionary<string, Tuple<int, int[], bool, string>>

JSON 문자열에 저장 한 다음 응용 프로그램 설정에 저장하거나

public class JsonSerializer
{
    public string Serialize<T>(T aObject) where T : new()
    {
        T serializedObj = new T();
        MemoryStream ms = new MemoryStream(); 
        DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
        ser.WriteObject(ms, aObject);
        byte[] json = ms.ToArray();
        ms.Close();
        return Encoding.UTF8.GetString(json, 0, json.Length);
    }

    public T Deserialize<T>(string aJSON) where T : new()
    {
        T deserializedObj = new T();
        MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(aJSON));
        DataContractJsonSerializer ser = new DataContractJsonSerializer(aJSON.GetType());
        deserializedObj = (T)ser.ReadObject(ms);
        ms.Close();
        return deserializedObj;
    }
}

.NET4에는 DataContractJsonSerializer와 같은 기본 제공 JSON 클래스가 있지만 매우 약하고 다차원 배열을 지원하지 않습니다. JSON.Net을 사용하는 것이 좋습니다.

참고 URL : https://stackoverflow.com/questions/3275863/does-net-4-have-a-built-in-json-serializer-deserializer

반응형