在WP7 / Silverlight上解析复杂的JSON [英] Parsing Complex JSON on WP7/Silverlight

查看:60
本文介绍了在WP7 / Silverlight上解析复杂的JSON的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Windows Phone开发的新手,C#的新手,并试图为我的公司构建原型。  我能够使用DataContractJsonSerializer反序列化一个非常简单的JSON结果,如下所示:


解决方案

定义一个单独的合同对于每个级别或"级别",在json的回应中。您的主数据合同将具有定义为这些合同类型的属性。例如:



" allocation":{$
   "city":"SEATTLE",

   "region":"WA",

   "country":"US",

   " carrier_name":"SPRINT SPECTRUM L.P.",

   "access_type":"无线",

   "ratecenter":"SEATTLE",

   " ratecenter_formatted":" Seattle",$
   "lat":47.6062095,

   "lng": - 122.3320708,

   "geo_precision":4,

   " available_on":null,

   " effective_on":null,

   "carrier_ocn":" 6664",

   "污染":null,

   "npa":206,

   "nxx":683,

   "block_code":null,

   " assigned_on":null,

   " current_on":" 2010-04-28",

   "status":"已分配",

}



如下所示:




[



 



DataContract ]


 


 


 



 




 


public
class
ResponseData


 



{


     [



 



DataMember ]


 




 


     public
分配 分配;


}


[



 




DataContract ]


 


 


  ;



 




public
class
分配


 


 




 



{


     [



 



DataMember ]


 




 


     public
string geo_precision;  


     [



 




DataMember ]


 


     public
string npa;

 


 


     [



 



DataMember ]


 


 


  ;



 




    public
string assigned_on;


 


 


     [



 




DataMember ]


 


 


  ;



 




    public
string country;


 


 


     [



 




DataMember ]


 


 


  ;



 




    public
string status; 


 


 


     [



 




DataMember ]


 


 


  ;



 




    public
string 已分配;


 


     [



 




DataMember ]


 




 


     public
string ratecenter_formatted;


     [



 




DataMember ]


 




 


     public
string nxx;


     [



 




DataMember ]


 


 



 




    public
string carrier_name;


 


     [



 




DataMember ]


 


 



 




    public
string effective_on;


 


     [



 




DataMember ]


 


 



 




    public
string region;


 


     [



 




DataMember ]


 


 



 




    public
string carrier_ocn;


 


    [



 




DataMember ]


 


 



 




    public
string available_on;


 


     [



 




DataMember ]


 




 


     public
string access_type;  


     [



 




DataMember ]


 




 


     public
string lat;  


     [



 




DataMember ]


 


 



 




     public
string 污染;


 


     [



 




DataMember ]


 


 



 




     public
string ratecenter;


 


     [



 




DataMember ]


 


 



 




     public
string city;


 


     [



 




DataMember ]


 


 



 




     public
string lng;


 


     [



 




DataMember ]


 


 



 




     public
string current_on;  


 


     [



 




DataMember ]


 


 



 




     public
string block_code;  


 


}

< br>
数据合同可能将另一个数据合同定义为财产。




 


I'm new to Windows Phone development, new to C#, and trying to build a prototype for my company.  I was able to use the DataContractJsonSerializer to deserialize a really simple JSON result like this:


解决方案

Define a separate contract for each level or "class" in the json response. Your main data contract will have properties that are defined as the type of these contracts. For example:

"allocation": {
   "city": "SEATTLE",
   "region": "WA",
   "country": "US",
   "carrier_name": "SPRINT SPECTRUM L.P.",
   "access_type": "wireless",
   "ratecenter": "SEATTLE",
   "ratecenter_formatted": "Seattle",
   "lat": 47.6062095,
   "lng": -122.3320708,
   "geo_precision": 4,
   "available_on": null,
   "effective_on": null,
   "carrier_ocn": "6664",
   "contaminations": null,
   "npa": 206,
   "nxx": 683,
   "block_code": null,
   "assigned_on": null,
   "current_on": "2010-04-28",
   "status": "allocated",
}

looks like this:

[

 

DataContract]

 

 

 

 

 

public class ResponseData

 

{

    [

 

DataMember]

 

 

    public allocation allocation;

}

[

 

DataContract]

 

 

 

 

public class allocation

 

 

 

{

    [

 

DataMember]

 

 

    public string geo_precision;  

    [

 

DataMember]

 

    public string npa;

 

 

    [

 

DataMember]

 

 

 

 

   public string assigned_on;

 

 

    [

 

DataMember]

 

 

 

 

   public string country;

 

 

    [

 

DataMember]

 

 

 

 

   public string status; 

 

 

    [

 

DataMember]

 

 

 

 

   public string allocated;

 

    [

 

DataMember]

 

 

    public string ratecenter_formatted;

    [

 

DataMember]

 

 

    public string nxx;

    [

 

DataMember]

 

 

 

   public string carrier_name;

 

    [

 

DataMember]

 

 

 

   public string effective_on;

 

    [

 

DataMember]

 

 

 

   public string region;

 

    [

 

DataMember]

 

 

 

   public string carrier_ocn;

 

    [

 

DataMember]

 

 

 

   public string available_on;

 

    [

 

DataMember]

 

 

    public string access_type;  

    [

 

DataMember]

 

 

    public string lat;  

    [

 

DataMember]

 

 

 

    public string contaminations;

 

    [

 

DataMember]

 

 

 

    public string ratecenter;

 

    [

 

DataMember]

 

 

 

    public string city;

 

    [

 

DataMember]

 

 

 

    public string lng;

 

    [

 

DataMember]

 

 

 

    public string current_on;  

 

    [

 

DataMember]

 

 

 

    public string block_code;  

 

}

A data contract may have another data contract defined as a property.

 


这篇关于在WP7 / Silverlight上解析复杂的JSON的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆