咱們常常會用到json,因此在c#裏就會常常有對象or對象數組轉json,json轉對象or對象數組。json
ps:對象或者json多是{}or[],也就是json屬性or json數組形式,或者json對象屬性裏嵌套,嵌套屬性....無限級嵌套均可以實現。c#
前提:咱們定義的對象,或者嵌套對象 必定要和json格式結構徹底同樣!數組
重點說第一個和最後一個,我的建議用最後一個簡單並強大spa
定義對象:code
public class Person { public string Name { get; set; } public int Age { get; set; } }
第一種方法:對象
借用兩個自定義方法,以下:blog
private Object JsonToObj(String json, Type t) { try { System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(t); using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json))) { return serializer.ReadObject(ms); } } catch { return null; } } private string ObjToJson<T>(T data) { try { System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(data.GetType()); using (MemoryStream ms = new MemoryStream()) { serializer.WriteObject(ms, data); return Encoding.UTF8.GetString(ms.ToArray()); } } catch { return null; } }
使用以下:字符串
任意格式和嵌套的json轉對象:get
jsonStr是json字符串
Person data = new Person();string
data = JsonToObj(jsonStr, typeof(Person)) as Person; //若是是List對象,就把Person都換成List<Person>便可。
對象轉任意格式和嵌套的json字符串:
jsonStr= ObjToJson<PlayerPet>(newdata);
最後一種方法:強烈推薦
任意格式和嵌套的json轉對象:
jsonStr是json字符串
Person data = new Person();
data = (Person)JsonConvert.DeserializeObject(jsonStr, typeof(Person)); //若是是List對象,就把Person都換成List<Person>便可。
對象轉任意格式和嵌套的json字符串:
jsonStr= JsonConvert.SerializeObject(newdata);
最後一種方法只須要引用:using Newtonsoft.Json;便可,無需單寫方法