NewtonSoft.json 反序列化 Json 有关问题
NewtonSoft.json 反序列化 Json 问题
这是要序列化的Json:
使用 NewtonSoft来完成,代码如下:
如果自定义的内部类中去掉 result 是不会有问题的,可以正常拿值。但一把 result 加进去,就会如下的错:

第一次使用 newtonsoft ,不太懂 请大神帮忙指出问题 谢谢
------解决思路----------------------
所以 你的"类"应该是如下的样子
这是要序列化的Json:
{
"error": 0,
"status": "Success",
"date": "2015-09-09",
"result": {
"name": "颐和园",
"location": {
"lng": 116.26844967549,
"lat": 39.992182483805
},
"telephone": "010-62881144",
"star": "5",
"url": "http://lvyou.baidu.com/yiheyuan",
"abstract": "我国现存规模最大、保存最完整的皇家园林,久负盛名。",
"description": "颐和园位于北京西北郊海淀区内,距北京城区15公里,是我国现存规模最大,保存最完整的皇家园林之一,也是享誉世界的旅游胜地之一。 颐和园是利用昆明湖、万寿山为基址,以杭州西湖风景为蓝本,汲取江南园林的某些设计手法和意境而建成的一座大型天然山水园,也是保存得最完整的一座皇家行宫御苑,被誉为皇家园林博物馆。 颐和园景区规模宏大,园内建筑以佛香阁为中心,园中有景点建筑物百余座、大小院落20余处,3555古建筑,面积70000多平方米,共有亭、台、楼、阁、廊、榭等不同形式的建筑3000多间。古树名木1600余株。其中佛香阁、长廊、石舫、苏州街、十七孔桥、谐趣园、大戏台等都已成为家喻户晓的代表性建筑。",
"ticket_info": {
"price": "1. 旺季(4月1日~10月31日):30.00元 德和园:5.00元 佛香阁:10.00元 苏州街:10.00元 文昌院:20.00元 联票(含门票、文昌院、德和园、佛香阁、苏州街澹宁堂):60.00元 2. 淡季(11月1日~3月31日):20.00元 德和园:5.00元 佛香阁:10.00元 苏州街:10.00元 文昌院:20.00元 联票(含门票、文昌院、德和园、佛香阁、苏州街澹宁堂):50.00元",
"open_time": "1. 旺季(4月1日~10月31日):06:30~20:00 停止售票时间:18:00 园中园(含文昌院、德和园、佛香阁、苏州街澹宁堂):08:30~17:00 2. 淡季(11月1日~3月31日):07:00~19:00 停止售票时间:17:00 园中园(含文昌院、德和园、佛香阁、苏州街澹宁堂):09:00~18:00",
"attention": [
{
"name": "【门票优惠政策】",
"description": "1. 身高1.2米以下儿童免票。 2. 北京市65岁以上老年人凭老年证免票;外地70周岁以上(含70周岁)老年人凭有效证件,门票半价优惠。 3. 大、中、小学学生(不含成人教育学生)、外国留学生凭学生证,门票半价优惠。 4. 残疾人、离休干部、离休军人、现役军人、武警官兵、省、部级以上劳模凭有效证件免票。 5. 持有社会保障金领取证的人员凭有效证件,门票半价优惠。"
}
]
}
}
}
使用 NewtonSoft来完成,代码如下:
protected void Page_Load(object sender, EventArgs e)
{
string url = "http://apis.baidu.com/apistore/attractions/spot";
string param = "id=yiheyuan&output=json";
string jsonText = request(url, param);
string json = JsonConvert.DeserializeObject(jsonText).ToString();
BAIDU_API api = JsonConvert.DeserializeObject<BAIDU_API>(json);
string error = api.error;
}
public struct BAIDU_API
{
public string error { get; set; }
public string status { get; set; }
public string date { get; set; }
public string result { get; set; }
}
如果自定义的内部类中去掉 result 是不会有问题的,可以正常拿值。但一把 result 加进去,就会如下的错:
第一次使用 newtonsoft ,不太懂 请大神帮忙指出问题 谢谢
------解决思路----------------------
所以 你的"类"应该是如下的样子
public class Location
{
public double lng { get; set; }
public double lat { get; set; }
}
public class Attention
{
public string name { get; set; }
public string description { get; set; }
}
public class TicketInfo
{
public string price { get; set; }
public string open_time { get; set; }
public List<Attention> attention { get; set; }
}
public class Result
{
public string name { get; set; }
public Location location { get; set; }
public string telephone { get; set; }
public string star { get; set; }
public string url { get; set; }
public string @abstract { get; set; }
public string description { get; set; }
public TicketInfo ticket_info { get; set; }
}
public class RootObject
{
public int error { get; set; }
public string status { get; set; }
public string date { get; set; }
public Result result { get; set; }
}
var rs=JsonConvert.DeserializeObject<RootObject>(json);