轉自 http://hi.baidu.com/wjinbd/item/c54d43d998beb33be3108fddjson
1 建立本身要用的類數組
class stu { string _name; int _age; public string name {get{return _name;} set {_name=value;} } public int age { get { return _age; } set { _age = value; } } }
2 使用反射方法spa
public object jsonToObject(string jsonstr, Type objectType)//傳遞兩個參數,一個是json字符串,一個是要建立的對象的類型 { string[] jsons = jsonstr.Split(new char[] { ',' });//將json字符串分解成 「屬性:值」數組 for (int i = 0; i < jsons.Length; i++) { jsons[i] = jsons[i].Replace("\"", ""); }//去掉json字符串的雙引號 object obj = System.Activator.CreateInstance(typeof(stu)); //使用反射動態建立對象 PropertyInfo[] pis = obj.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);//得到對象的全部public屬性 if (pis != null)//若是得到了屬性 foreach (PropertyInfo pi in pis)//針對每個屬性進行循環 { for (int i = 0; i < jsons.Length; i++)//檢查json字符串中的全部「屬性:值」類表 { if (jsons[i].Split(new char[] { ':' })[0] == pi.Name)//若是對象的屬性名稱剛好和json中的屬性名相同 { Type proertyType = pi.PropertyType; //得到對象屬性的類型 pi.SetValue(obj, Convert.ChangeType(jsons[i].Split(new char[] { ':' })[1], proertyType), null); //將json字符串中的字符串類型的「值」轉換爲對象屬性的類型,並賦值給對象屬性 } } } return obj; }
3 調用3d
String jsonstr = "\"name\":\"zhang\",\"age\":\"19\""; stu aa = (stu)jsonToObject(jsonstr, typeof(stu));