日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

如何利用.Net內(nèi)置類,解析未知復(fù)雜Json對象

 昵稱10504424 2013-09-03

如果你樂意,當(dāng)然可以使用強大的第三方類庫Json.Net中的JObject類解析復(fù)雜Json字串 。

我不太希望引入第三方類庫,所以在.Net內(nèi)置類JavaScriptSerializer.DeserializeObject的基礎(chǔ)上做了一些封裝,可以方便的讀取復(fù)雜json中的內(nèi)容,而無需專門定義對應(yīng)的類型。

等不及看的,直接下載源碼: JsonObject.7z (2013-08-29更新,第三版)

 

代碼實例:

 

復(fù)制代碼
namespace JsonUtils
{
class Program
{
static void Main(string[] args)
{
string json = "{errNo:0,data:[{id:100,name:'jack'},{id:101,name:'tom',info:{birthday:'1989-6-5'}}]} ";
JsonObject value = JsonObject.Parse(json);
Console.Write(value["data"][1]["info"]["birthday"].Text());
Console.Read();
}
}
}
復(fù)制代碼

 

封裝的類:

 

復(fù)制代碼
using System;
using System.Collections.Generic;
using System.Text;
using System.Web.Script.Serialization;
namespace JsonUtils
{
public class JsonObject
{
/// <summary>
/// 解析JSON字串
/// </summary>
public static JsonObject Parse(string json)
{
var js = new JavaScriptSerializer();
object obj = js.DeserializeObject(json);
return new JsonObject()
{
Value = obj
};
}
/// <summary>
/// 取對象的屬性
/// </summary>
public JsonObject this[string key]
{
get
{
var dict = this.Value as Dictionary<string, object>;
if (dict != null && dict.ContainsKey(key))
{
return new JsonObject { Value = dict[key] };
}
return new JsonObject();
}
}
/// <summary>
/// 取數(shù)組
/// </summary>
public JsonObject this[int index]
{
get
{
var array = this.Value as object[];
if (array != null && array.Length > index)
{
return new JsonObject { Value = array[index] };
}
return new JsonObject();
}
}
/// <summary>
/// 將值以希望類型取出
/// </summary>
public T GetValue<T>()
{
return (T)Convert.ChangeType(Value, typeof(T));
}
/// <summary>
/// 取出字串類型的值
/// </summary>
public string Text()
{
return Convert.ToString(Value);
}
/// <summary>
/// 取出數(shù)值
/// </summary>
public double Number()
{
return Convert.ToDouble(Value);
}
/// <summary>
/// 取出整型
/// </summary>
public int Integer()
{
return Convert.ToInt32(Value);
}
/// <summary>
/// 取出布爾型
/// </summary>
public bool Boolean()
{
return Convert.ToBoolean(Value);
}
/// <summary>
////// </summary>
public object Value
{
get;
private set;
}
/// <summary>
/// 如果是數(shù)組返回數(shù)組長度
/// </summary>
public int Length
{
get
{
var array = this.Value as object[];
if (array != null)
{
return array.Length;
}
return 0;
}
}
}
}

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多