在百度 API Store 找个旅游的 API 来当成本次 Demo 的例子

接口地址:http://apis.baidu.com/apistore/attractions/spot
AIPKEY: ba491eeaaedf24f4fb20f59e9df27eb6

先拿到返回的 Json 字符串:

 /// <summary>
/// 发送HTTP请求
/// </summary>
/// <param name="url">请求的URL</param>
/// <param name="param">请求的参数</param>
/// <returns>请求结果</returns>
public static string request(string url, string param)
{
string strURL = url + '?' + param;
System.Net.HttpWebRequest request;
request = (System.Net.HttpWebRequest)WebRequest.Create(strURL);
request.Method = "GET";
// 添加header
request.Headers.Add("apikey", "ba491eeaaedf24f4fb20f59e9df27eb6");
System.Net.HttpWebResponse response;
response = (System.Net.HttpWebResponse)request.GetResponse();
System.IO.Stream s;
s = response.GetResponseStream();
string StrDate = "";
string strValue = "";
StreamReader Reader = new StreamReader(s, Encoding.UTF8);
while ((StrDate = Reader.ReadLine()) != null)
{
strValue += StrDate + "\r\n";
}
return strValue;
}

调用:

 string url = "http://apis.baidu.com/apistore/attractions/spot";
string param = "id=yiheyuan&output=json";
string jsonText = request(url, param);

使用 Newtonsoft.Json.dll 来进行 Json 的序列化 :

string json = JsonConvert.DeserializeObject(jsonText).ToString();

得到的 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. 持有社会保障金领取证的人员凭有效证件,门票半价优惠。"
}
]
}
}
}

解析这个 Json 并且拿到以上 key 对应的 value 代码如下:

先根据拿到的 Json 字符串中的 key 对象属性来定义 Model 类:

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; }
}

获取所有的 key & value:

 var rs = JsonConvert.DeserializeObject<RootObject>(json);

NewtonSoft.json 序列化和反序列化实例的更多相关文章

  1. Newtonsoft.Json 序列化和反序列化 以及时间格式 2 高级使用

    手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数 ...

  2. Newtonsoft.Json 序列化和反序列化 时间格式

    From : http://www.cnblogs.com/litian/p/3870975.html 1.JSON序列化 string JsonStr= JsonConvert.SerializeO ...

  3. Newtonsoft.Json 序列化和反序列化 时间格式 [转]

    1.JSON序列化 string JsonStr= JsonConvert.SerializeObject(Entity); eg:   A a=new A(); a.Name="Elain ...

  4. [转]Newtonsoft.Json 序列化和反序列化 时间格式

    本文转自:http://www.cnblogs.com/litian/p/3870975.html 1.JSON序列化 string JsonStr= JsonConvert.SerializeObj ...

  5. Newtonsoft.Json 序列化和反序列化 以及时间格式

    1.JSON序列化 string JsonStr= JsonConvert.SerializeObject(Entity); eg:   A a=new A(); a.Name="Elain ...

  6. Newtonsoft.Json 序列化和反序列化 时间格式【转】

    1.JSON序列化 string JsonStr= JsonConvert.SerializeObject(Entity); eg:   A a=new A(); a.Name="Elain ...

  7. newtonsoft.json 序列化,反序列化

    public class Book { public string BookID { get; set; } public DateTime PublishDate { get; set; } pub ...

  8. Newtonsoft.Json 序列化和反序列化 以及时间格式 2

    一.JSON使用JsonPropertyAttribute重命名属性名 1.先创建一个Movie对象,然后在其属性上添加JsonProperty,并指定重命名的名称.注意:属性Name和Directo ...

  9. 使用Newtonsoft.Json序列化和反序列化对象(源码)

    Json数据格式,简单而强大. 使用Json,不得不提到Newtonsoft.Json,它帮助我们更方便的使用Json,当然,不使用它也是可以的,还有许多方法将对象序列化成Json字符串,暂且不提. ...

随机推荐

  1. LR 录制时,web_link出现乱码

    在录制时,用到了web_link,但是web_link不能实别中文,因此在回放时,不能识别web_link,问题如下: web_link("??",   "Text=?? ...

  2. 使用curl下载文件

    curl是一个非常好的网络传输库,使用也很简单.常用的使用方式是用它来下载资源文件,以下提供一个下载方法 #include <stdio.h> #include <iostream. ...

  3. Java 并发之共享对象

    上一篇文章说的是,避免多个线程在同一时间访问对象中的同一数据,这篇文章来详细说说共享和发布对象. 在没有同步的情况下,我们无法预料编译器.处理器安排操作执行的顺序,经常会发生以为“一定会”发生的动作实 ...

  4. Recommended add-ons/plugins for Microsoft Visual Studio [closed]

    SmartPaster - (FREE) Copy/Paste code generator for strings AnkhSvn - (FREE) SVN Source Control Integ ...

  5. hdu 01背包汇总(1171+2546+1864+2955。。。

    1171 题意比较简单,这道题比较特别的地方是01背包中,每个物体有一个价值有一个重量,比较价值最大,重量受限,这道题是价值受限情况下最大,也就值把01背包中的重量也改成价值. //Problem : ...

  6. Redis 数据库结构设计

    Redis设计参考资料: http://my.oschina.net/fsmwhx/blog/152130 http://my.oschina.net/1123581321/blog/164288 h ...

  7. 转HTMLTestRunner 生成测试报告

    1.HTMLTestRunner 是 Python 标准库的 unittest 模块的一个扩展.它生成易于使用的 HTML 测试报告 1>下载HTMLTestRunner.py文件,地址为: h ...

  8. Matplot中文乱码完美解决方式

    一.改动matplotlibrc文件 (永久解决方式) 1. 定位matplotlibrc文件 该文件位于[python_install_dir]\Lib\site-packages\matplotl ...

  9. 导入导出封装的工具类 (一) 利用POI封装

    对于导入导出各个项目中差点儿都会用到,记得在高校平台中封装过导入导出这部分今天看了看是利用JXL封装的而经理说让我用POI写写导出,这两个导入导出框架是眼下比較流程和经常使用的框架,有必要都了解一下. ...

  10. Spring mvc Data Redis—Pub/Sub(附Web项目源码)

    一.发布和订阅机制 当一个客户端通过 PUBLISH 命令向订阅者发送信息的时候,我们称这个客户端为发布者(publisher). 而当一个客户端使用 SUBSCRIBE 或者 PSUBSCRIBE ...