C#處理Json字符串實(shí)例分析
Json字符串對(duì)于做web應(yīng)用的應(yīng)該很熟悉,其實(shí)在很多請(qǐng)求我們返回的都是Json字符串。那對(duì)于C#代碼如何處理Json字符串呢,.Net封裝了一個(gè)類(lèi)叫做JavaScriptSerializer[MSDN Library 鏈接http://msdn.microsoft.com/en-us/library/ee191864(v=vs.110).aspx];這個(gè)類(lèi)提供了一個(gè)方法。
下面這個(gè)是我在快遞100往抓取的一個(gè)圓通的快遞信息。對(duì)于我們有用的信息是快遞時(shí)間,快遞狀況。那我該如何來(lái)做。
{"message":"ok","nu":"9356359685","ischeck":"1","com":"yuantong","status":"200","condition":"F00","state":"3","data":[{"time":"2014-09-01 21:19:06","context":"甘肅省武威市公司 已簽收 ","ftime":"2014-09-01 21:19:06"},{"time":"2014-09-01 09:09:28","context":"甘肅省武威市公司 派件中 ","ftime":"2014-09-01 09:09:28"},{"time":"2014-09-01 09:06:27","context":"甘肅省武威市公司 已收入 ","ftime":"2014-09-01 09:06:27"},{"time":"2014-08-31 19:53:47","context":"甘肅省蘭州市公司 已發(fā)出 ","ftime":"2014-08-31 19:53:47"},{"time":"2014-08-31 19:17:41","context":"甘肅省蘭州市公司 已收入 ","ftime":"2014-08-31 19:17:41"},{"time":"2014-08-28 23:44:26","context":"廣東省深圳市橫崗公司 已打包 ","ftime":"2014-08-28 23:44:26"},{"time":"2014-08-28 23:19:12","context":"廣東省深圳市橫崗公司 已收件 ","ftime":"2014-08-28 23:19:12"},{"time":"2014-08-28 21:55:35","context":"廣東省深圳市橫崗公司 已收件 ","ftime":"2014-08-28 21:55:35"}]}
1. 首先分析Json字符串結(jié)構(gòu). Json{ message,nu,isCheck,Data{time,context,ftime}};我們先定義一個(gè)類(lèi),取名為PostalDeliveryModel,類(lèi)名的結(jié)構(gòu)需要與Json結(jié)構(gòu)對(duì)應(yīng),名稱(chēng)需要保持一樣[忽略大小寫(xiě)],其次對(duì)應(yīng)的字段說(shuō)會(huì)自動(dòng)轉(zhuǎn)換類(lèi)型的,類(lèi)型如果不符合會(huì)拋出異常
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TestJson
{
public class PostalDeliveryModel
{
private string message = string.Empty;
private string nu = string.Empty;
private List<SingalData> data = new List<SingalData>();
// Puclic的名字需要與Json字符串相同,但是忽略大小寫(xiě)
public string Message
{
get { return this.message; }
set { this.message = value; }
}
public string Nu
{
get { return this.nu; }
set { this.nu = value; }
}
public List<SingalData> Data
{
get { return this.data; }
set { this.data = value; }
}
}
public class SingalData
{
private DateTime time = System.DateTime.Now;
private string context = string.Empty;
private DateTime ftime = System.DateTime.Now;
public DateTime Time
{
get { return this.time; }
set { this.time = value; }
}
public DateTime FTime
{
get { return this.ftime; }
set { this.ftime = value; }
}
public string Context
{
get { return this.context; }
set { this.context = value; }
}
}
}
2.對(duì)象什么好后只需要調(diào)用方法即可:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Web.Script.Serialization; // 此命名空間對(duì)應(yīng)的框架是 System.Web.Extensions
namespace TestJson
{
public class Program
{
public static void Main(string[] args)
{
string jsonStr = new StreamReader("JsonData.txt").ReadToEnd();
PostalDeliveryModel mode = new JavaScriptSerializer().Deserialize<PostalDeliveryModel>(jsonStr);
Console.ReadKey();
}
}
}
3.運(yùn)行監(jiān)控model對(duì)象.數(shù)據(jù)已經(jīng)在對(duì)象里面了。
4.方法回顧,雖然獲取到了。不過(guò)這種方法類(lèi)的Public屬性名稱(chēng)必須與Json字符串對(duì)應(yīng),不知道可否通過(guò)在Public屬性的上面加上[標(biāo)簽]來(lái)映射,這樣可以自定義名稱(chēng),不再需要與Json里面名稱(chēng)一樣。求其他大牛在評(píng)論的時(shí)候指點(diǎn)一下。
以上所述就是對(duì)于c#如何處理json字符串的全部?jī)?nèi)容了,希望大家能夠喜歡。
相關(guān)文章
C#使用Zxing.dll組件解析二維碼的實(shí)現(xiàn)
ZXing是一個(gè)開(kāi)源的,支持多種格式的條形碼圖像處理庫(kù),本文主要介紹了C#使用Zxing.dll組件解析二維碼的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09基于C#的音樂(lè)播放器主Form實(shí)現(xiàn)代碼
這篇文章主要介紹了基于C#的音樂(lè)播放器主Form實(shí)現(xiàn)代碼,很實(shí)用的功能,需要的朋友可以參考下2014-08-08關(guān)于C#數(shù)強(qiáng)轉(zhuǎn)會(huì)不會(huì)拋出異常詳解
這篇文章主要給大家介紹了關(guān)于C#數(shù)強(qiáng)轉(zhuǎn)會(huì)不會(huì)拋出異常的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04C#引用類(lèi)型和值類(lèi)型的適用場(chǎng)合和區(qū)別
今天小編就為大家分享一篇關(guān)于C#引用類(lèi)型和值類(lèi)型的適用場(chǎng)合和區(qū)別,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01SuperSocket入門(mén)--Telnet服務(wù)器和客戶(hù)端請(qǐng)求處理
本文的控制臺(tái)項(xiàng)目是根據(jù)SuperSocket官方Telnet示例代碼進(jìn)行調(diào)試的,官方示例代碼:Telnet示例。下面跟著小編一起來(lái)看下吧2017-01-01C#實(shí)現(xiàn)自定義windows系統(tǒng)日志的方法
這篇文章主要介紹了C#實(shí)現(xiàn)自定義windows系統(tǒng)日志的方法,涉及C#針對(duì)windows系統(tǒng)日志的創(chuàng)建、讀寫(xiě)及刪除技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-08-08