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);