当前位置: 代码迷 >> ASP.NET >> 对JSON不懂,直接求解解方案。该怎么处理
  详细解决方案

对JSON不懂,直接求解解方案。该怎么处理

热度:6421   发布时间:2013-02-25 00:00:00.0
对JSON不懂,直接求解解方案。
功能描述:用户输入一个IP地址,查IP所在地等信息。

API接口:http://ip.taobao.com/service/getIpInfo.php?ip=125.36.12.14

接口返回数据是JSON:
{"code":0,"data":{"ip":"125.36.12.14","country":"\u4e2d\u56fd","country_id":"86","area":"\u534e\u5317","area_id":"100000","region":"\u5929\u6d25\u5e02","region_id":"120000","city":"\u5929\u6d25\u5e02","city_id":"120000","county":"\u6b66\u6e05\u533a","county_id":"120114","isp":"\u8054\u901a","isp_id":"100026"}}

code中的0表示成功,1表示失败。

对JSON不懂,用string接收不了这段数据。

所以直接求代码,最好能有注释。

------解决方案--------------------------------------------------------
用 Json.NET 反序列化成

public class IpInfo
{
public string code;
public Hashtable data;
}

C# code
class Program    {        static void Main(string[] args)        {            var getIpInfoUrl = "http://ip.taobao.com/service/getIpInfo.php?ip={0}";            getIpInfoUrl = string.Format(getIpInfoUrl, "125.36.12.14");            var client = new WebClient();            var result = client.DownloadString(getIpInfoUrl);            var ipInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<IpInfo>(result);            foreach (var key in ipInfo.data.Keys)                Console.WriteLine("{0}:{1}", key, ipInfo.data[key]);            Console.Read();        }    }    public class IpInfo    {        public string code;        public Hashtable data;    }
------解决方案--------------------------------------------------------
C# code
    protected void Page_Load(object sender, EventArgs e)    {        string path = "http://ip.taobao.com/service/getIpInfo.php?ip=125.36.12.14";        HttpWebRequest hwrq = (HttpWebRequest)WebRequest.Create(path);        HttpWebResponse hwrp = (HttpWebResponse)hwrq.GetResponse();        Stream stream = null;        try        {            stream = hwrp.GetResponseStream();            DataContractJsonSerializer datajson = new DataContractJsonSerializer(typeof(IpInfo));            IpInfo ipinfo = datajson.ReadObject(stream) as IpInfo;            Response.Write(ipinfo.code + "==" + ipinfo.data.ip + "==" + ipinfo.data.country + "==" + ipinfo.data.area);        }        finally        {            if (stream != null)            {                stream.Close();                stream.Dispose();            }        }    }    [DataContract]    public class IpInfo    {        [DataMember]        public int code;        [DataMember]        public data data;    }    [DataContract]    public class data    {        [DataMember]        public string ip;        [DataMember]        public string country;        [DataMember]        public string country_id;        [DataMember]        public string area;        [DataMember]        public string area_id;        [DataMember]        public string region;        [DataMember]        public string region_id;        [DataMember]        public string city;        [DataMember]        public string city_id;        [DataMember]        public string county;        [DataMember]        public string county_id;        [DataMember]        public string isp;        [DataMember]        public string isp_id;    }
  相关解决方案