标签:
匿名类型常见于脚本语言如js,as等等。
匿名类型的好处在于临时使用一次数据不需要,先定义再使用,比较方便,如在js中定义一个对象
var obj={id=‘001‘,name=‘xxx‘};
使用则直接使用obj.id=‘0025‘;
但是在c#这种强类型的语言中并不是这样方便,比如我需要将一个js接口返回的json数据进行反序列化,在此处以百度地图定位接口为例:
http://api.map.baidu.com/location/ip
返回参数:
{ address: "CN|北京|北京|None|CHINANET|1|None", #地址 content: #详细内容 { address: "北京市", #简要地址 address_detail: #详细地址信息 { city: "北京市", #城市 city_code: 131, #百度城市代码 district: "", #区县 province: "北京市", #省份 street: "", #街道 street_number: "" #门址 }, point: #百度经纬度坐标值 { x: "116.39564504", y: "39.92998578" } }, status: 0 #返回状态码 }
如果实在js中则直接使用var location=JSON.parse(str); 属性直接可以使用location.xx使用
如果在c#中先得定义一个数据类,然后反序列化为该数据类,在net4过后增加了匿名类型来勉强应付一下,不过有总比没有好,下面来看怎样使用
1 基本思路
将字符串反序列化为一个Jobject对象
2 使用属性
第一种做法(匿名类):
实际上,我们也可以直接反序列化为 JObject,然后通过索引器直接访问。JObject、JProperty 等都继承自 JToken,它重载了基元类型转换操作符,我们可以直接得到实际结果。
二 自定义构建匿名对象
2.1 指明属性
var obj=new {
属性a="",
属性b=3432
};
2.2 不指明属性
var pt=new Point(122,30);
var obj=new {pt.x,pt.y }
此时x,y则默认为该obj对象属性
标签:
原文地址:http://www.cnblogs.com/rjjs/p/5455556.html