JavaScriptSerializer.Serialize 方法

定義

將物件轉換成 JSON 字串。

多載

名稱 Description
Serialize(Object)

將物件轉換成 JSON 字串。

Serialize(Object, StringBuilder)

序列化一個物件,並將產生的 JSON 字串寫入指定的 StringBuilder 物件。

Serialize(Object)

將物件轉換成 JSON 字串。

public:
 System::String ^ Serialize(System::Object ^ obj);
public string Serialize(object obj);
member this.Serialize : obj -> string
Public Function Serialize (obj As Object) As String

參數

obj
Object

要串連的物件。

傳回

序列化的 JSON 字串。

例外狀況

所得的 JSON 字串超過 了 的 MaxJsonLength值。

-或-

obj 包含循環引用。 當子物件對父物件有參考,而父物件又有對子物件的參考時,就發生了循環參考。

遞迴極限 RecursionLimit 被超越。

範例

以下範例簡單說明如何序列化與反序列化資料物件。

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

備註

當實 JavaScriptSerializer 例正在序列化一個有自訂轉換器的型別時,序列化器會呼叫該 Serialize 方法,取得將被轉換成 JSON 字串的名稱/值對字典。

若物件圖過於複雜,或註冊的 實JavaScriptConverter例已導致轉換器遞迴,該Serialize方法也能拋出例外。

適用於

Serialize(Object, StringBuilder)

序列化一個物件,並將產生的 JSON 字串寫入指定的 StringBuilder 物件。

public:
 void Serialize(System::Object ^ obj, System::Text::StringBuilder ^ output);
public void Serialize(object obj, System.Text.StringBuilder output);
member this.Serialize : obj * System.Text.StringBuilder -> unit
Public Sub Serialize (obj As Object, output As StringBuilder)

參數

obj
Object

要串連的物件。

output
StringBuilder

StringBuilder 來寫入 JSON 字串的物件。

例外狀況

所得的 JSON 字串超過 了 的 MaxJsonLength值。

-或-

obj 包含循環引用。 當子物件對父物件有參考,而父物件又有對子物件的參考時,就發生了循環參考。

遞迴極限 RecursionLimit 被超越。

outputnull

備註

當實 JavaScriptSerializer 例正在序列化一個有自訂轉換器的型別時,序列化器會呼叫該 Serialize 方法,取得將被轉換成 JSON 字串的名稱/值對字典。

若物件圖過於複雜,或註冊的 實JavaScriptConverter例已導致轉換器遞迴,該Serialize方法也能拋出例外。

適用於