This article was translated by machine. To view in the article in English, select the English check box. You can also display the English text in a popup window by moving the mouse pointer over the text.
الترجمة
الأصلي
This documentation is archived and is not being maintained.

JavaScriptSerializer الفئة

Visual Studio 2010

توفر سلسلة و deserialization الأداء الوظيفي للتطبيقات التي تعتمد على AJAX.

مساحة الاسم:  System.Web.Script.Serialization
التجميع:  System.Web.Extensions (في System.Web.Extensions.dll)

public class JavaScriptSerializer

JavaScriptSerializer الفئة هو يستخدمه داخليا الطبقة بالاتصالات غير المتزامنة لإجراء تسلسل وإلغاء تسلسل بيانات التي هو مرورها بين مستعرض وخادم ويب. لا يمكنك الوصول إلى مثيل مسلسل ذلك. على الرغم من ذلك، هذا فئة كشف API عامة. ولذلك، يمكنك استخدام الفئة عندما تريد أن إلى تعمل مع تدوين كائن JavaScript (JSON) في تعليمات برمجية مُدارة.

إلى إجراء تسلسل لكائن ما، استخدم Serializeالأسلوب. إلى إلغاء تسلسل سلسلة JSON، استخدم Deserializeأو DeserializeObjectالأساليب. لإجراء تسلسل وإلغاء تسلسل أنواع التي غير الأصل المعتمدة JavaScriptSerializer، تطبيق المحولات المخصصة باستخدام JavaScriptConverterفئة. ثم تسجيل المحولات بواسطة استخدام RegisterConvertersالأسلوب.

التعيين بين أنواع مدارة و JSON

يعرض الجدول التالي التعيين بين مدارة أنواع و JSON لعملية إنشاء تسلسل. هذه مدارة أنواع الأصل يدعمها JavaScriptSerializer. عندما يتم يمكنك إلغاء تسلسل من سلسلة JSON إلى نوع مدارة، يطبق تعيين نفسه. ومع ذلك، يمكن إلغاء التسلسل غير متماثل; قابل لعدم الجميع التسلسل مدارة يمكن أن يتم إلغاء تسلسل أنواع من JSON.

ملاحظةملاحظة

الصفائف متعددة الأبعاد هو تسلسل صفيفة أحادي الأبعاد، ويجب استخدامه كصفيفة مسطحة.

نوع المدارة

JSON مكافئ

String (UTF-8 ترميز فقط).

سلسة نصية

Char

سلسة نصية

خالية من حرف مفرد (مثل كـ،\0)

Null

Boolean

قيمة منطقية. تمثيل في JSON كـ trueأوfalse

null (nullكائن مراجع وNullableالقيمة أنواع).

القيمة سلسلة فارغة

DBNull

القيمة سلسلة فارغة

الأنواع رقمية (أو الرقمية المتوافقة) الأولية: Byte و SByte و Int16 و Int32 و Int64 و UInt16 و UInt32 و UInt64 و Double و Single يستخدم في تمثيل سلسلة الثقافة-invariant.

رقم

DateTime

كائن التاريخ، ممثلة في JSON ك "\/Date (عدد علامات التجزئة)\/". عدد علامات التجزئة هو قيمة طويلة إيجابية أو سلبية تشير إلى عدد علامات التجزئة (millهوeconds) المنقضية منذ منتصف يناير 01, 1970 التوقيت العالمي المتفق عليه.

اعتماد الحد الأقصى القيمة التاريخ هو MaxValue(12/31/9999 11:59:59 PM) والحد الأدنى المعتمد بتاريخ القيمة هو MinValue(1/1/0001 12:00:00 AM).

عمليات التعداد نوع عدد صحيح

المكافئ صحيحاً للتعداد القيمة

أنواع تطبيق IEnumerableأو System.Collections.Generic.IEnumerable<T>التي أيضا غير تطبيقات IDictionaryأو System.Collections.Generic.IDictionary<TKey, TValue>. يتضمن ذلك أنواع مثل كـ Array، ArrayList، و List<T>.

الصفيف الذي يستخدم بناء جملة صفيفة JSON

أنواع تطبيق IDictionaryأو System.Collections.Generic.IDictionary<TKey, TValue>. يتضمن ذلك أنواع مثل Dictionary<TKey, TValue>و Hashtable.

كائن JavaScript يستخدم بناء الجملة القاموس JSON

مخصص أنواع (غير الملخص) الخرسانة التي تحتوي على خصائص مثيل عمومي التي تحتوي على حقول مثيل عمومي أو accessors.

لاحظ أن الخصائص العامة للكتابة فقط أو خاصية عامة أو السمات الحقول العامة عليها ScriptIgnoreAttribute، والجمهور فهرسة الخصائص في هذه أنواع يتم تجاهل.

كائن JavaScript يستخدم بناء الجملة القاموس JSON. خاصية بيانات تعريف خاص باسم "__type" هو المضمنة للتأكد من إلغاء التسلسل الصحيح. تأكد من أن يحصل على خصائص مثيل عمومي وتعيين accessors إلى تأكد من إلغاء التسلسل الصحيح.

Guid

تمثيل سلسلة للمعرف الفريد العمومي

Uri

تمثيل سلسلة لقيمة الإرجاع ل GetComponents

يوضح المثال التالي كيفية إلى استخدام JavaScriptSerializerالفئة إلى الحفظ و resإلىre الولاية كائن باستخدام إنشاء تسلسل JSON. Th هو رمز يستخدم محوّل مخصصة التي هو موفراً JavaScriptConverterفئة.


<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Script.Serialization" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    JavaScriptSerializer serializer;
    protected void Page_Load(object sender, EventArgs e)
    {
        serializer = new JavaScriptSerializer();

        // Register the custom converter.
        serializer.RegisterConverters(new JavaScriptConverter[] { 
            new System.Web.Script.Serialization.CS.ListItemCollectionConverter() });
        this.SetFocus(TextBox1);
    }

    protected void saveButton_Click(object sender, EventArgs e)
    {
        // Save the current state of the ListBox control.
        SavedState.Text = serializer.Serialize(ListBox1.Items);
        recoverButton.Enabled = true;
        Message.Text = "State saved";
    }

    protected void recoverButton_Click(object sender, EventArgs e)
    {        
        //Recover the saved items of the ListBox control.
        ListItemCollection recoveredList = serializer.Deserialize<ListItemCollection>(SavedState.Text);
        ListItem[] newListItemArray = new ListItem[recoveredList.Count];
        recoveredList.CopyTo(newListItemArray, 0);
        ListBox1.Items.Clear();
        ListBox1.Items.AddRange(newListItemArray);
        Message.Text = "Last saved state recovered.";
    }

    protected void clearButton_Click(object sender, EventArgs e)
    {
        // Remove all items from the ListBox control.
        ListBox1.Items.Clear();
        Message.Text = "All items removed";
    }

    protected void ContactsGrid_SelectedIndexChanged(object sender, EventArgs e)
    {
        // Get the currently selected row using the SelectedRow property.
        GridViewRow row = ContactsGrid.SelectedRow;

        // Get the ID of item selected.
        string itemId = ContactsGrid.DataKeys[row.RowIndex].Value.ToString();                
        ListItem newItem = new ListItem(row.Cells[4].Text, itemId);

        // Check if the item already exists in the ListBox control.
        if (!ListBox1.Items.Contains(newItem))
        {
            // Add the item to the ListBox control.
            ListBox1.Items.Add(newItem);
            Message.Text = "Item added";
        }
        else
            Message.Text = "Item already exists";
    }

    protected void ContactsGrid_PageIndexChanged(object sender, EventArgs e)
    {
        //Reset the selected index.
        ContactsGrid.SelectedIndex = -1;
    }

    protected void searchButton_Click(object sender, EventArgs e)
    {
        //Reset indexes.
        ContactsGrid.SelectedIndex = -1;
        ContactsGrid.PageIndex = 0;

        //Set focus on the TextBox control.
        ScriptManager1.SetFocus(TextBox1);
    }

    protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
    {
        // Show/hide the saved state string.        
        SavedState.Visible = CheckBox1.Checked;
        StateLabel.Visible = CheckBox1.Checked;
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Save/Recover state</title>
    <style type="text/css">
        body {  font: 11pt Trebuchet MS;
                font-color: #000000;
                padding-top: 72px;
                text-align: center }

        .text { font: 8pt Trebuchet MS }
    </style>
</head>
<body>    
    <form id="form1" runat="server" defaultbutton="searchButton" defaultfocus="TextBox1">
        <h3>
            <span style="text-decoration: underline">
                                    Contacts Selection</span><br />
        </h3>
        <asp:ScriptManager runat="server" ID="ScriptManager1" />
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                Type contact's first name:
                <asp:TextBox ID="TextBox1" runat="server" />
                <asp:Button ID="searchButton" runat="server" Text="Search" OnClick="searchButton_Click" />&nbsp;
                <br />
                <br />
                <table border="0" width="100%">
                    <tr>
                        <td style="width:50%" valign="top" align="center">
                            <b>Search results:</b><br />
                            <asp:GridView ID="ContactsGrid" runat="server" AutoGenerateColumns="False"
                                CellPadding="4" DataKeyNames="ContactID" DataSourceID="SqlDataSource1"
                                OnSelectedIndexChanged="ContactsGrid_SelectedIndexChanged" ForeColor="#333333" GridLines="None" AllowPaging="True" PageSize="7" OnPageIndexChanged="ContactsGrid_PageIndexChanged">
                                <Columns>
                                    <asp:CommandField ShowSelectButton="True" ButtonType="Button" />
                                    <asp:BoundField DataField="ContactID" HeaderText="ContactID" SortExpression="ContactID" Visible="False" />
                                    <asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" />
                                    <asp:BoundField DataField="LastName" HeaderText="LastName" SortExpression="LastName" />
                                    <asp:BoundField DataField="EmailAddress" HeaderText="EmailAddress" SortExpression="EmailAddress" />
                                </Columns>
                                <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
                                <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                                <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
                                <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                                <EditRowStyle BackColor="#999999" />
                                <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                                <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                                <EmptyDataTemplate>No data found.</EmptyDataTemplate>
                            </asp:GridView>
                            <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:AdventureWorksConnectionString %>"
                                SelectCommand="SELECT ContactID, FirstName, LastName, EmailAddress FROM Person.Contact WHERE (UPPER(FirstName) = UPPER(@FIRSTNAME))" >
                                <SelectParameters>
                                    <asp:ControlParameter Name="FIRSTNAME" ControlId="TextBox1" Type="String" />
                                </SelectParameters>
                            </asp:SqlDataSource>
                        </td>
                        <td valign="top">
                            <b>Contacts list:</b><br />
                        <asp:ListBox ID="ListBox1" runat="server" Height="200px" Width="214px" /><br />
                        <asp:Button ID="saveButton" runat="server" Text="Save state" OnClick="saveButton_Click" ToolTip="Save the current state of the list" />
                        <asp:Button ID="recoverButton" runat="server" Text="Recover saved state" OnClick="recoverButton_Click" Enabled="false" ToolTip="Recover the last saved state" />
                        <asp:Button ID="clearButton" runat="server" Text="Clear" OnClick="clearButton_Click" ToolTip="Remove all items from the list" /><br />
                            <br />
                            <asp:CheckBox ID="CheckBox1" runat="server" Checked="True" OnCheckedChanged="CheckBox1_CheckedChanged"
                                Text="Show saved state" AutoPostBack="True" /></td>
                    </tr>
                    <tr>
                        <td colspan="2">
                            <br />
                            <br />
                            &nbsp;&nbsp;
                            <hr />
                            Message: <asp:Label ID="Message" runat="server" ForeColor="SteelBlue" />&nbsp;&nbsp;<br />
                            <asp:Label ID="StateLabel" runat="server" Text="State:"></asp:Label>
                            <asp:Label ID="SavedState" runat="server"/><br />                        
                        </td>
                    </tr>
                </table>
            </ContentTemplate>
        </asp:UpdatePanel>
        <asp:UpdateProgress ID="UpdateProgress1" runat="server">
            <ProgressTemplate>
                <asp:Image ID="Image1" runat="server" ImageUrl="..\images\spinner.gif" />&nbsp;Processing...
            </ProgressTemplate>
        </asp:UpdateProgress>
    </form>
</body>
</html>


System.Object
  System.Web.Script.Serialization.JavaScriptSerializer

يتم تأمين العملية الجزئية لأي عضو عمومي ثابت (مشترك في Visual Basic) من هذا النوع. لن يتم ضمان تأمين العملية الجزئية لأي عضو مثيل.

نظام التشغيل Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, نظام التشغيل Windows Server 2003

لا يدعم .NET Framework و .NET Compact Framework كافة الإصدارات الخاصة بكل نظام أساسي. للحصول على قائمة بالإصدارات المدعمة، راجع متطلبات النظام إطار عمل .NET.

.NET Framework

مدعوم في: 4, 3.5
إظهار: