不創建類將json數據轉換


一般,取到json數據之后,都會將json數據轉換為對象,通過屬性取得里面的屬性值,這樣做可以很好地利用vs的智能提示,讓開發更輕松,但是代價就是,你需要手動的創建json數據相對應的類。

也有其他方法可以很方便的取到數據:

1.利用正則表達式提取,代碼如下:

 public static int GetIntProperty(string key, string json)
{
var code = 0;
var regex = new Regex(String.Format("\"{0}\":(?<value>-?\\d+)", key), RegexOptions.IgnoreCase);

var match = regex.Match(json);
if (match.Success)
{
var codeValue = match.Groups["value"].Value;

int.TryParse(codeValue, out code);

return code;
}

return 0;
}

public static string GetStringProperty(string key, string json)
{

var regex = new Regex(String.Format("\"{0}\":\"(?<value>.+?)\"", key), RegexOptions.IgnoreCase);

var match = regex.Match(json);
if (match.Success)
{
return match.Groups["value"].Value;
}

return String.Empty;
}

public static string Serialize(object obj)
{
var jser = new JavaScriptSerializer();
var json = jser.Serialize(obj);

json = Regex.Replace(json, @"\\/Date\((\d+)\)\\/", match =>
{
DateTime dt = new DateTime(1970, 1, 1);
dt = dt.AddMilliseconds(long.Parse(match.Groups[1].Value));
dt = dt.ToLocalTime();
return dt.ToString("yyyy-MM-dd HH:mm:ss");
});

return json;
}

 一共三個方法,第一個是取json里面的int類型的值,當然稍微改造下的也可以取得bool類型的。。。

第二個放大取得string類型的值,

打三個方法,主要是為了解決json數據中日期類型的數據顯示異常的問題。

 

2.利用Newtonsoft.Json把json對象轉換成dynamic對象

public void GetPropertyValue(string jsonStr)
{
dynamic stocks = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonStr);
code = stock.name;
symbol = stock.age;
name = stock.gender;
}

 上面只是演示,json字符串對應的是一個有code,symbol,stock三個屬性的類

利用這個方法可以很方便的取值,但是要求你知道json的結構

 

好了,這就是今天的分享。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com