다음을 통해 공유


JavaScriptConverter 클래스

정의

사용자 지정 형식 변환기의 추상 기본 클래스를 제공합니다.

public ref class JavaScriptConverter abstract
public abstract class JavaScriptConverter
type JavaScriptConverter = class
Public MustInherit Class JavaScriptConverter
상속
JavaScriptConverter

예제

다음 예제에 대 한 사용자 지정 변환기를 만드는 방법을 보여 줍니다는 ListItemCollection 클래스입니다.

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Web.UI.WebControls;
using System.Collections;

namespace System.Web.Script.Serialization.CS
{
    public class ListItemCollectionConverter : JavaScriptConverter
    {

        public override IEnumerable<Type> SupportedTypes
        {
            //Define the ListItemCollection as a supported type.
            get { return new ReadOnlyCollection<Type>(new List<Type>(new Type[] { typeof(ListItemCollection) })); }
        }

        public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)
        {
            ListItemCollection listType = obj as ListItemCollection;

            if (listType != null)
            {
                // Create the representation.
                Dictionary<string, object> result = new Dictionary<string, object>();
                ArrayList itemsList = new ArrayList();
                foreach (ListItem item in listType)
                {
                    //Add each entry to the dictionary.
                    Dictionary<string, object> listDict = new Dictionary<string, object>();
                    listDict.Add("Value", item.Value);
                    listDict.Add("Text", item.Text);
                    itemsList.Add(listDict);
                }
                result["List"] = itemsList;

                return result;
            }
            return new Dictionary<string, object>();
        }

        public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer)
        {
            if (dictionary == null)
                throw new ArgumentNullException("dictionary");

            if (type == typeof(ListItemCollection))
            {
                // Create the instance to deserialize into.
                ListItemCollection list = new ListItemCollection();

                // Deserialize the ListItemCollection's items.
                ArrayList itemsList = (ArrayList)dictionary["List"];
                for (int i=0; i<itemsList.Count; i++)
                    list.Add(serializer.ConvertToType<ListItem>(itemsList[i]));

                return list;
            }
            return null;
        }
    }
}
Imports System.Collections.Generic
Imports System.Collections.ObjectModel
Imports System.Web.UI.WebControls
Imports System.Collections

Namespace System.Web.Script.Serialization.VB

    Public Class ListItemCollectionConverter
        Inherits JavaScriptConverter

        Public Overrides ReadOnly Property SupportedTypes() As _
            System.Collections.Generic.IEnumerable(Of System.Type)
            Get
                ' Define the ListItemCollection as a supported type.
                Return New ReadOnlyCollection(Of Type)(New List(Of Type) _
                (New Type() {GetType(ListItemCollection)}))
            End Get
        End Property

        Public Overrides Function Serialize(ByVal obj As Object, _
            ByVal serializer As JavaScriptSerializer) As _
            System.Collections.Generic.IDictionary(Of String, Object)

            Dim listType As ListItemCollection = CType(obj, ListItemCollection)

            If Not (listType Is Nothing) Then

                ' Create the representation.
                Dim result As New Dictionary(Of String, Object)

                Dim itemsList As New ArrayList()
                Dim item As ListItem
                For Each item In listType
                    ' Add each entry to the dictionary.
                    Dim listDict As New Dictionary(Of String, Object)
                    listDict.Add("Value", item.Value)
                    listDict.Add("Text", item.Text)
                    itemsList.Add(listDict)
                Next item
                result("List") = itemsList

                Return result
            End If
            Return New Dictionary(Of String, Object)
        End Function

        Public Overrides Function Deserialize(ByVal dictionary As _
            System.Collections.Generic.IDictionary(Of String, Object), _
            ByVal type As System.Type, ByVal serializer As JavaScriptSerializer) As Object

            If dictionary Is Nothing Then
                Throw New ArgumentNullException("dictionary")
            End If

            If type Is GetType(ListItemCollection) Then
                ' Create the instance to deserialize into.
                Dim list As New ListItemCollection()

                ' Deserialize the ListItemCollection's items.
                Dim itemsList As ArrayList = CType(dictionary("List"), ArrayList)
                Dim i As Integer
                For i = 0 To itemsList.Count - 1
                    list.Add(serializer.ConvertToType(Of ListItem)(itemsList(i)))
                Next i

                Return list
            End If

            Return Nothing

        End Function
    End Class
End Namespace

설명

합니다 JavaScriptConverter 클래스를 사용 하면 serialization을 구현 하 여 고유 하 게 지원 되지 않는 관리 되는 형식에 대 한 프로세스를 deserialization 하는 JavaScriptSerializer 클래스입니다. 사용할 수도 있습니다 JavaScriptConverter serialization 및 deserialization 프로세스를 보다 자세히 제어 해야 하는 경우.

SupportedTypes 속성 사용자 지정 변환기 변환기 서비스 제공 하는 형식을 나타냅니다.

사용자 지정 변환기를 사용 해야 함을 나타내려면는 JavaScriptSerializer 들어 인스턴스와 변환기를 등록 해야 합니다. 사용 중인 경우는 JavaScriptSerializer 직접 클래스를 사용 해야는 RegisterConverters 변환기를 등록 하는 방법입니다. 그렇지 않으면 ECMAScript (JavaScript)에서 웹 메서드를 호출 하는 사용자 지정 변환기를 사용 하려는 경우 등록할 수 있습니다를 추가 하 여를 converters 구성 파일의 요소입니다. 자세한 내용은 방법: Microsoft Ajax에서 ASP.NET 서비스 구성합니다.

경우는 JavaScriptSerializer 인스턴스는 형식에 등록 하는 사용자 지정 변환기가 호출 하 여 serializer 직렬화 합니다 Serialize 메서드. 마찬가지로, 합니다 JavaScriptSerializer 인스턴스 개체 JSON (JavaScript Notation) 문자열을 역직렬화 되 고 JSON 문자열을 내부 형식에 연결 된 serializer 호출 하 여 사용자 지정 변환기는 인식는 Deserialize 메서드.

구현자 참고

상속 하는 경우 JavaScriptConverter, 멤버를 재정의 해야 합니다.

생성자

JavaScriptConverter()

JavaScriptConverter 클래스의 새 인스턴스를 초기화합니다.

속성

SupportedTypes

파생 클래스에서 재정의된 경우 지원되는 형식의 컬렉션을 가져옵니다.

메서드

Deserialize(IDictionary<String,Object>, Type, JavaScriptSerializer)

파생 클래스에서 재정의되는 경우 제공된 사전을 지정된 형식의 개체로 변환합니다.

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.

(다음에서 상속됨 Object)
GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
Serialize(Object, JavaScriptSerializer)

파생 클래스에서 재정의되는 경우 이름/값 쌍으로 구성된 사전을 만듭니다.

ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)

적용 대상

추가 정보