json轉對象-對象轉json

咱們常常會用到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;便可,無需單寫方法

相關文章
相關標籤/搜索