다음을 통해 공유


JavaScriptSerializer.Deserialize 메서드

정의

오버로드

Deserialize(String, Type)

JSON 형식 문자열을 지정된 형식의 개체로 변환합니다.

Deserialize<T>(String)

지정한 JSON 문자열을 T 형식의 개체로 변환합니다.

Deserialize(String, Type)

JSON 형식 문자열을 지정된 형식의 개체로 변환합니다.

public:
 System::Object ^ Deserialize(System::String ^ input, Type ^ targetType);
public object Deserialize (string input, Type targetType);
member this.Deserialize : string * Type -> obj
Public Function Deserialize (input As String, targetType As Type) As Object

매개 변수

input
String

역직렬화할 JSON 문자열입니다.

targetType
Type

결과 개체의 형식입니다.

반환

Object

역직렬화된 개체입니다.

예외

input이(가) null인 경우

input 길이가 MaxJsonLength의 값을 초과합니다.

또는 RecursionLimit로 정의된 재귀 한계를 초과했습니다.

또는 input에 예기치 않은 문자 시퀀스가 있습니다.

또는 input는 사전 형식이며 문자열이 아닌 키 값이 발견되었습니다.

또는 input에 대상 형식에 사용할 수 없는 멤버 정의가 있습니다.

input에 사용자 지정 형식을 나타내는 “__type” 속성이 있지만 현재 serializer와 연결된 형식 확인자가 해당 관리되는 형식을 찾을 수 없습니다.

또는 input에 사용자 지정 형식을 나타내는 “__type” 속성이 포함되어 있지만 해당 JSON 문자열의 역직렬화 결과를 원하는 대상 형식에 할당할 수 없습니다.

또는 inputObject 또는 인스턴스화할 수 없는 형식(추상 형식 또는 인터페이스 등)을 나타내는 “__type” 속성이 포함되어 있습니다.

또는 JSON 배열을 JSON deserialization 대상으로 사용할 수 없는 배열 형태의 관리되는 형식으로 변환하려고 했습니다.

또는 input을 대상 형식으로 변환할 수 없습니다.

설명

이 역직렬화 메서드는 개체 그래프의 루트를 메서드가 수행하는 방식으로 Deserialize 특정 형식으로 캐스팅하지 않습니다.

적용 대상

Deserialize<T>(String)

지정한 JSON 문자열을 T 형식의 개체로 변환합니다.

public:
generic <typename T>
 T Deserialize(System::String ^ input);
public T Deserialize<T> (string input);
member this.Deserialize : string -> 'T
Public Function Deserialize(Of T) (input As String) As T

형식 매개 변수

T

결과 개체의 형식입니다.

매개 변수

input
String

역직렬화할 JSON 문자열입니다.

반환

T

역직렬화된 개체입니다.

예외

input 길이가 MaxJsonLength의 값을 초과합니다.

또는 RecursionLimit로 정의된 재귀 한계를 초과했습니다.

또는 input에 예기치 않은 문자 시퀀스가 있습니다.

또는 input는 사전 형식이며 문자열이 아닌 키 값이 발견되었습니다.

또는 input에 형식 T에 사용할 수 없는 멤버 정의가 있습니다.

input이(가) null인 경우

input에 사용자 지정 형식을 나타내는 “__type” 속성이 있지만 serializer와 연결된 형식 확인자에서 해당 관리되는 형식을 찾을 수 없습니다.

또는 input에 사용자 지정 형식을 나타내는 “__type” 속성이 포함되어 있지만 해당 JSON 문자열의 역직렬화 결과를 원하는 대상 형식에 할당할 수 없습니다.

또는 inputObject 또는 인스턴스화할 수 없는 형식(추상 형식 또는 인터페이스 등)을 나타내는 “__type” 속성이 포함되어 있습니다.

또는 JSON 배열을 JSON deserialization 대상으로 사용할 수 없는 배열 형태의 관리되는 형식으로 변환하려고 했습니다.

또는 inputT로 변환할 수 없습니다.

예제

다음 예제에서는 데이터 개체를 직렬화하고 역직렬화하는 방법에 대한 간단한 그림을 제공합니다.

using System;
using System.Collections.Generic;
using System.Web.UI;
using System.Web.Script.Serialization;

namespace ExampleApplication
{
    public partial class _Default : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            var RegisteredUsers = new List<Person>();
            RegisteredUsers.Add(new Person() { PersonID = 1, Name = "Bryon Hetrick", Registered = true });
            RegisteredUsers.Add(new Person() { PersonID = 2, Name = "Nicole Wilcox", Registered = true });
            RegisteredUsers.Add(new Person() { PersonID = 3, Name = "Adrian Martinson", Registered = false });
            RegisteredUsers.Add(new Person() { PersonID = 4, Name = "Nora Osborn", Registered = false });

            var serializer = new JavaScriptSerializer();
            var serializedResult = serializer.Serialize(RegisteredUsers);
            // Produces string value of:
            // [
            //     {"PersonID":1,"Name":"Bryon Hetrick","Registered":true},
            //     {"PersonID":2,"Name":"Nicole Wilcox","Registered":true},
            //     {"PersonID":3,"Name":"Adrian Martinson","Registered":false},
            //     {"PersonID":4,"Name":"Nora Osborn","Registered":false}
            // ]

            var deserializedResult = serializer.Deserialize<List<Person>>(serializedResult);
            // Produces List with 4 Person objects
        }
    }
}
Imports System.Web.Script.Serialization

Public Class _Default
    Inherits Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
        Dim RegisteredUsers As New List(Of Person)()
        RegisteredUsers.Add(New Person With {.PersonID = 1, .Name = "Bryon Hetrick", .Registered = True})
        RegisteredUsers.Add(New Person With {.PersonID = 2, .Name = "Nicole Wilcox", .Registered = True})
        RegisteredUsers.Add(New Person With {.PersonID = 3, .Name = "Adrian Martinson", .Registered = False})
        RegisteredUsers.Add(New Person With {.PersonID = 4, .Name = "Nora Osborn", .Registered = False})

        Dim serializer As New JavaScriptSerializer()
        Dim serializedResult = serializer.Serialize(RegisteredUsers)
        ' Produces string value of:
        ' [
        '     {"PersonID":1,"Name":"Bryon Hetrick","Registered":true},
        '     {"PersonID":2,"Name":"Nicole Wilcox","Registered":true},
        '     {"PersonID":3,"Name":"Adrian Martinson","Registered":false},
        '     {"PersonID":4,"Name":"Nora Osborn","Registered":false}
        ' ]

        Dim deserializedResult = serializer.Deserialize(Of List(Of Person))(serializedResult)
        ' Produces List with 4 Person objects
    End Sub
End Class

다음 예제에 나와 있는 이름이 지정된 Person클래스가 필요합니다.

namespace ExampleApplication
{
    public class Person
    {
        public int PersonID { get; set; }
        public string Name { get; set; }
        public bool Registered { get; set; }
    }
}
Public Class Person
    Public Property PersonID As Integer
    Public Property Name As String
    Public Property Registered As Boolean
End Class

설명

메서드는 Deserialize 먼저 메서드를 DeserializeObject 사용하여 개체 그래프를 가져온 다음 결과를 형식 T으로 캐스팅하는 것과 같습니다.

역직렬화 중에 serializer의 현재 형식 확인자가 참조되어 배열 및 사전 형식 내에 중첩된 요소를 변환할 때 사용할 관리되는 형식을 결정합니다. 결과적으로 역직렬화 프로세스는 중첩된 모든 요소를 input반복합니다. 형식 확인자에 대한 자세한 내용은 클래스를 JavaScriptTypeResolver 참조하세요.

적용 대상