c#对象和json对象转换方法总结

来源:互联网 发布:java回调函数的作用 编辑:程序博客网 时间:2024/06/02 02:36

1、使用Newtonsoft.Json.JsonConvert类

Newtonsoft.Json.JsonConvert类是非微软提供的一个JSON序列化和反序列的开源免费的类库(下载网址是:http://www.codeplex.com/json/),它提供了更灵活的序列化和反序列化控制
[Serializable]
class User{
public string UserName{get;set;}
public int    UserId{get;set;}
}


private static void ObjectConvertTest()
{
User user = new User { UserId =1, UserName ="XUW"};
//JSON序列化
string result = JsonConvert.SerializeObject(user);
Console.WriteLine("c#对象转换成json字符串:{0}", result);
//JSON反序列化
user = JsonConvert.DeserializeObject<User>(result);
Console.WriteLine("json字符串转换成c#对象:UserId:{0},UserName: {1}", user.UserId, user.UserName);
}




2、.Net framework 4.0及以上版本可以使用DataContractJsonSerializer转换

 // 从一个对象信息生成Json串
public static string ObjectToJson(object obj)
{
    DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
    using (MemoryStream stream = new MemoryStream())
    {
        serializer.WriteObject(stream, obj);
        return Encoding.UTF8.GetString(stream.ToArray());
    }
}
// 从一个Json串生成对象信息
public static object JsonToObject(string jsonString, object obj)
{
    DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
    using (MemoryStream mStream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))
    {
        return serializer.ReadObject(mStream);
    }
}




3、.Net framework 4.0及以上版本可以使用JavaScriptSerializer类转换

[Serializable]
[DataContract]
public class Person
{
[DataMember(Order=1,Name="id")]
public int ID { get; set; }


[DataMember(Order=2,Name="name")]
public String Name { get; set; }
}
Person pA = new Person { ID = 1,Name = "hello world"};
Person pB = new Person { ID = 2, Name = "hello ets" };
JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
String json = javaScriptSerializer.Serialize(new List<Person>() { pA, pB });
List<Person> personList = javaScriptSerializer.Deserialize<List<Person>>(json); 
0 0