zoukankan      html  css  js  c++  java
  • C#访问web api获取json数据并对其进行解析

    C#访问web api获取json数据并对其进行解析

    C#访问web api并获取json数据

    1. 引用命名空间

    using System.Net;  //访问网络
    using System.IO;   //接收流数据
    

    2. 创建WebRequest对象,使用静态方法Create(url)

    string url = "https://restapi.amap.com/v3/weather/weatherInfo?city=110101&key=84567e9a80aaa95b24478261b2f92678";
    WebRequest request = WebRequest.Create(url);
    

    3. 创建WebResponse对象接受响应

    WebResponse response = request.GetResponse();
    

    4. 创建流对象读取数据并转换成字符串

    Stream webstream = response.GetResponseStream();
    StreamReader streamReader = new StreamReader(webstream);
    string json = streamReader.ReadToEnd();  
    

    5. 输出看看

    对json数据进行解析

    1. 添加引用

    2. 引用命名空间

    using System.Web.Script.Serialization;
    

    3. 构造对应json格式的类(可以用网站http://json2csharp.chahuo.com/)

    //存储天气json格式的类
            public class Lives
            {
                public string province { get; set; }
                public string city { get; set; }
                public string adcode { get; set; }
                public string weather { get; set; }
                public string temperature { get; set; }
                public string winddirection { get; set; }
                public string windpower { get; set; }
                public string humidity { get; set; }
                public string reporttime { get; set; }
            }
    
            public class RootObject
            {
                public string status { get; set; }
                public string count { get; set; }
                public string info { get; set; }
                public string infocode { get; set; }
                public List<Lives> lives { get; set; }
    
            }
    

    4. 反序列化,将指定的 JSON 字符串转换为 RootObject类型的对象。

    JavaScriptSerializer js = new JavaScriptSerializer();//实例化一个能够序列化数据的类
    RootObject rootObject = js.Deserialize<RootObject>(json);  //反序列化
    string province = rootObject.lives[0].province;
    string city = rootObject.lives[0].city;
    string weather = rootObject.lives[0].weather;
    string msg = String.Format("{0}-{1}的天气是:{2}", province, city, weather);
    

    5. 输出看看

    全部代码

    using System.Net;
    using System.IO;
    using System.Web.Script.Serialization;
    
    
    
     //存储天气json格式的类
     public class Lives
     {
         public string province { get; set; }
         public string city { get; set; }
         public string adcode { get; set; }
         public string weather { get; set; }
         public string temperature { get; set; }
         public string winddirection { get; set; }
         public string windpower { get; set; }
         public string humidity { get; set; }
         public string reporttime { get; set; }
     }
    
    public class RootObject
    {
        public string status { get; set; }
        public string count { get; set; }
        public string info { get; set; }
        public string infocode { get; set; }
        public List<Lives> lives { get; set; }
    
    }
    
    
    private void 天气ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        string url = "https://restapi.amap.com/v3/weather/weatherInfo?city=110101&key=84567e9a80aaa95b24478261b2f92678";
        WebRequest request = WebRequest.Create(url);  //创建连接
        WebResponse response = request.GetResponse();
        Stream webstream = response.GetResponseStream();
        StreamReader streamReader = new StreamReader(webstream);
    
        string json = streamReader.ReadToEnd();  //获取json数据
        JavaScriptSerializer js = new JavaScriptSerializer();//实例化一个能够序列化数据的类
        RootObject rootObject = js.Deserialize<RootObject>(json);  //反序列化
        string province = rootObject.lives[0].province;
        string city = rootObject.lives[0].city;
        string weather = rootObject.lives[0].weather;
        string msg = String.Format("{0}-{1}的天气是:{2}", province, city, weather);
        MessageBox.Show(msg);
    
    }
    
  • 相关阅读:
    Magento 安装时文件权限 设置
    进度十(10.28)
    进度九(10.27)
    进度八(10.26)
    进度六(10.24)
    进度五(10.23)
    进度四(10.22)
    进度三(10.21)
    进度二(10.20)
    进度一(10.19)
  • 原文地址:https://www.cnblogs.com/urahyou/p/14968054.html
Copyright © 2011-2022 走看看