Zināšanu bāze

JavaScriptSerializer (System.Web.Extensions.dll)

Labvakar,

Jaunais gads ir sagaidīts, laiks sākt strādāt ņemot piemēru no Stahanoviešiem:) Iespējams tādā veidā arī glābsim mūsu valsti!

Šoreiz par vienu interesantu klasi (JavaScriptSerializer), to var atrāst System.Web.Extensions.dll kompilācijā. Klases galvenais uzdevums, objektu, kas izveidots Microsoft.NET vidē aprakstīt JavaScript saprotamā formā (Json). Pārveidošana notiek abos virzienos. Šī te klase tiek pielietota ASP.NET AJAX un topošā Microsoft ASP.NET MVC.

Apskatīsim piemēru.

Uzrakstīsim vienkāršu klasi.

    /// <summary>
    /// The black box
    /// </summary>
    public class BlackBox
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="BlackBox"/> class.
        /// </summary>
        public BlackBox()
        {
            Description = "Class description";
            this.List = new[] {"Apple", "Orange"};
        }

        /// <summary>
        /// Gets or sets the description.
        /// </summary>
        /// <value>The description.</value>
        public string Description
        {
            get; set;
        }

        /// <summary>
        /// Gets or sets the list.
        /// </summary>
        /// <value>The list.</value>
        public string[] List
        {
            get; set;
        }
    }

Izveidosim objektu

var blackBox = new BlackBox();

Šo te objektu ir nepieciešamība nosūtīt uz klientu, gan arī saņemt no klienta. Šim te nolūkam izveidosim paplašinošas metodes tipam objekts(object) un kopai(string)

using System.Web.Script.Serialization;

public static class Helpers
{
    public static string ObjectToJson(this object obj)
    {
        var o = new JavaScriptSerializer();
        return o.Serialize(obj);
    }

    public static T JsonToObject<T>(this string str)
    {
        var o = new JavaScriptSerializer();
        return o.Deserialize<T>(str);
    }
}

Tagad esam gatavi manipulēt ar datiem.

Datu raidīšanu uz klientu var veikt šādi.

var blackBox = new BlackBox();
var s = blackBox.ObjectToJson();
Response.ContentType = "application/json";
Response.Write(s);

Uz klientu objekts nonāk lūk šādā te formā, tie kas labi pazīstami ar JavaScript noteikti atpazīst pierakta formu. Starp citu JavaScriptā viss ir Hashtable;)

{"Description":"Class description","List":["Apple","Orange"]} 

 

Savukārt saņemto datu apstrāde no klienta var veikt šādi.

var jsonString = "{\"Description\":\"Class description from client\",\"List\":[\"Lemon\"]}";
var o = jsonString.JsonToObject<BlackBox>();

Tātad visai elementāri atrisinām komunikāciju starp JavaScript un ASP.NET.

Cerams noderēs!


Posted Jan 03 2009, 07:47 PM by andrejs.mamontovs

Comments

valdis.iljuconoks wrote re: JavaScriptSerializer (System.Web.Extensions.dll)
on 01-04-2009 12:11

Teikums, ka "JavaScriptā viss ir Hashtable" atgādina man teikumu, ka visi dati (tai skaitā arī kods) ir saraksti :)

ivars.arins wrote re: JavaScriptSerializer (System.Web.Extensions.dll)
on 01-05-2009 19:46

Valdi, nav brīnums, ņemot vērā to, ka JS tomēr mērķē uz zināmu līdzību ar vārdā nenosaukto valodu, kurā viss ir saraksti :)

Runājot par tēmu - šo var izmantot gadījumos, kad kāds tīmekļa pakalpojums piedāvā JSON saskarni (API)

andrejs.mamontovs wrote re: JavaScriptSerializer (System.Web.Extensions.dll)
on 01-05-2009 22:31

Jā Ivar, te būs mazs knifs, tiem kas vēlas saprast, kā to var izmantot klientā

<script type="text/javascript">

   eval("var a = {\"M\":\"Hello world!\"};");

   alert(a.M);

</script>

Kā redzam serializētos datus var evaluet, izveidojot objektu.

valdis.iljuconoks wrote re: JavaScriptSerializer (System.Web.Extensions.dll)
on 01-10-2009 15:04

un kurš vēl teica, ka JS sako...?! :)

andrejs.mamontovs wrote re: JavaScriptSerializer (System.Web.Extensions.dll)
on 01-14-2009 18:08

Teiksim tā, katrai valodai savi piekritēji. Lai rakstītu labu JS kodu, jābūt milzīgai pieredzei.

viesis wrote re: JavaScriptSerializer (System.Web.Extensions.dll)
on 09-16-2010 15:00

negatīva pieredze ar JavaScriptSerializer datumu gadījumā, saserializē tā, ka Javascript uz lapas to "ar plikām rokām" īsti neatpazīst

Lolly wrote re: JavaScriptSerializer (System.Web.Extensions.dll)
on 10-05-2011 19:58

Real brain power on disaply. Thanks for that answer!

buy google +1 wrote re: JavaScriptSerializer (System.Web.Extensions.dll)
on 03-23-2012 13:34

e0yVwb I really enjoy the blog post.Really looking forward to read more. Really Great.

cheap oem software wrote re: JavaScriptSerializer (System.Web.Extensions.dll)
on 05-03-2012 14:49

xdSOQz Thanks for sharing, this is a fantastic blog article. Really Great.

Bookmarking Service wrote re: JavaScriptSerializer (System.Web.Extensions.dll)
on 08-06-2012 12:55

6p8JcF Im obliged for the blog.Thanks Again. Fantastic.

cheap bookmarking service wrote re: JavaScriptSerializer (System.Web.Extensions.dll)
on 09-11-2012 3:14

S4C8w2 Muchos Gracias for your article.Thanks Again. Fantastic.

Dhinda wrote re: JavaScriptSerializer (System.Web.Extensions.dll)
on 10-06-2012 12:08

Great inishgt. Relieved I'm on the same side as you.

cheap bookmarking service wrote re: JavaScriptSerializer (System.Web.Extensions.dll)
on 11-06-2012 14:24

LSIhoc I think this is a real great post.Much thanks again. Really Cool.

nike free run 2 wrote re: JavaScriptSerializer (System.Web.Extensions.dll)
on 11-20-2012 4:10

Not ever lour, even if you are usually unhappy, because you can't say for sure the person falling out obsessed about all of your be happy.

[url=www.nikeschuhedamenherren.com/nike-free-run-2-laufschuhe-f%C3%BCr-m%C3%A4nner-gr%C3%BCn-wei%C3%9F-p-1204.html]nike free run 2[/url]

<a href="www.nikeschuhedamenherren.com/nike-free-run-2-laufschuhe-f%C3%BCr-m%C3%A4nner-gr%C3%BCn-wei%C3%9F-p-1204.html" title="nike free run 2">nike free run 2</a>

Seo Service wrote re: JavaScriptSerializer (System.Web.Extensions.dll)
on 11-27-2012 11:44

MNR9TQ Thank you for your blog post.Really thank you! Want more.

social bookmarking submissions wrote re: JavaScriptSerializer (System.Web.Extensions.dll)
on 01-17-2013 15:34

uD3EJ8 Awesome post.Much thanks again. Really Great.

buy viagra wrote re: JavaScriptSerializer (System.Web.Extensions.dll)
on 02-03-2013 14:32

t004z4 Thanks-a-mundo for the blog post.Much thanks again. Cool.

buy cialis wrote re: JavaScriptSerializer (System.Web.Extensions.dll)
on 02-24-2013 17:16

dbhtRu I truly appreciate this article. Really Great.

viagra online wrote re: JavaScriptSerializer (System.Web.Extensions.dll)
on 03-04-2013 1:03

IRrt1c I really enjoy the blog article. Really Great.

social bookmarking service wrote re: JavaScriptSerializer (System.Web.Extensions.dll)
on 03-23-2013 20:04

PRFMD1 A big thank you for your blog post.Much thanks again. Want more.

buy social bookmarks wrote re: JavaScriptSerializer (System.Web.Extensions.dll)
on 04-04-2013 1:32

52IuqI Great, thanks for sharing this blog.Really looking forward to read more. Fantastic.

nonsense wrote re: JavaScriptSerializer (System.Web.Extensions.dll)
on 04-06-2013 4:34

A big thank you for your blog post.Much thanks again. Keep writing.

Social bookmarks wrote re: JavaScriptSerializer (System.Web.Extensions.dll)
on 04-08-2013 10:06

wCBC6O Very informative article post.Thanks Again. Keep writing.

Add a Comment

(obligāts)  
(brīvizvēles)
(obligāts)  
Remember Me?