Silverlight 加载JSON文件 以及反序列化

Silverlight 加载JSON文件 以及反序列化,第1张

概述在写 Silverlight Demo的过程中,由于不想涉及到数据库的东西,于是把数据存储在JSON的配置文件中,通过加载并解析 JSON文件来实现加载数据到前端 首先建立silverlight 应用程序 在  Web 工程中增加一个文本文件 命名为 json.txt,输入如下内容 [{"contryname" : "日本", "capital" : "东京"}, {"contryname" :

在写 Silverlight Demo的过程中,由于不想涉及到数据库的东西,于是把数据存储在JsON的配置文件中,通过加载并解析 JsON文件来实现加载数据到前端

首先建立silverlight 应用程序 在  Web 工程中增加一个文本文件 命名为 Json.txt,输入如下内容

[{"contryname" : "日本","cAPItal" : "东京"},
{"contryname" : "中国","cAPItal" : "北京"},
{"contryname" : "美国","cAPItal" : "华盛顿"},
{"contryname" : "印度","cAPItal" : "新德里"}]

在Silverlight 的工程里面 使用webclIEnt加载 Json文件。

  private voID button1_Click(object sender,RoutedEventArgs e)        {            Uri serviceuri = new Uri("http://localhost:38716/Json.txt");            WebClIEnt downloader = new WebClIEnt();            downloader.OpenReadCompleted += new OpenReadCompletedEventHandler(downloader_OpenReadCompleted);            downloader.OpenReadAsync(serviceuri);        }        voID downloader_OpenReadCompleted(object sender,OpenReadCompletedEventArgs e)        {            StreamReader reader = new StreamReader(e.Result);                     //  MessageBox.Show(reader.ReadToEnd());            JsonArray jdata =(JsonArray) JsonArray.Parse(reader.ReadToEnd());                   }

这样 JsON对象数组就保存到了 jdata里面 可以使用 foreach 来进行遍历

 foreach (JsonObject j in jdata)            {                MessageBox.Show(j["国家"]);            }
   在 .NET 的WEB 开发后台中我们可以使用JavaScriptSerializer 来进行序列化和反序列化,然后再SL中却无法使用这个类          
protected voID Page_Load(object sender,EventArgs e){Personnel personnel = new Personnel();personnel.ID = 1;personnel.name = "小白";JavaScriptSerializer JsonSerializer = new JavaScriptSerializer();//执行序列化string r1 = JsonSerializer.Serialize(personnel);//执行反序列化Personnel _Personnel = JsonSerializer.Deserialize<Personnel>(r1);}

不过可以使用DataContractJsonSerializer 来实现,注意要在在Silverlight端引入System.ServiceModel.Web.dll和System.Runtime.Serialization.dll,


       public class country
        {
      pubulic      string contryname { set; get; }
       public      string cAPItal { set; get; }
        }

由于我传递时是一个JsOn对象的数组,所以我 们将或得到的数据序列化为 List 对象
 DataContractJsonSerializer Js = new DataContractJsonSerializer(typeof(List<country>));            List<country> ls = Js.Readobject(e.Result) as List<country>;            foreach (country c in ls)            {                MessageBox.Show(c.contryname);            }


如果我们要将 List 对象 序列化为字符串呢。如下
 
  DataContractJsonSerializer Js2=new DataContractJsonSerializer(typeof(List<country>));
  MemoryStream stream = new MemoryStream();
  Js2.WriteObject(stream,ls);
  string s = EnCoding.UTF8.GetString(stream.ToArray(),stream.ToArray().Length);

 

JsON对象数组字符串则保存在 变量s中

总结

以上是内存溢出为你收集整理的Silverlight 加载JSON文件 以及反序列化全部内容,希望文章能够帮你解决Silverlight 加载JSON文件 以及反序列化所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1065606.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存