//Donet3.5自带了DLL处理json串
//注意引用:System.Runtime.Serialization,System.ServiceModel.Web
namespace ConsoleApplication7
{
public class Test
{
public string aaa="aa";
public string ccc= "ccc";
public List<Item> items = new List<Item>();
public Test()
{
this.items.Add(new Item());
this.items.Add(new Item());
this.items.Add(new Item());
}
}
public class Item
{
public string item="aa";
}
class Program
{
static void Main(string[] args)
{
string aaa = JsonTools.ObjectToJson(new Test());
Console.WriteLine(aaa);
Test aa = (Test)JsonTools.JsonToObject(aaa, new Test());
Console.ReadKey();
}
}
public class JsonTools
{
// 从一个对象信息生成Json串
public static string ObjectToJson(object obj)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
MemoryStream stream = new MemoryStream();
serializer.WriteObject(stream, obj);
byte[] dataBytes = new byte[stream.Length];
stream.Position = 0;
stream.Read(dataBytes, 0, (int)stream.Length);
return Encoding.UTF8.GetString(dataBytes);
}
// 从一个Json串生成对象信息
public static object JsonToObject(string jsonString, object obj)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
MemoryStream mStream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
return serializer.ReadObject(mStream);
}
}
}
对比的一个程序:
namespace ConsoleApplication9
{
public class Test
{
public string aaa = "aa";
public string ccc = "ccc";
public List<Item> items = new List<Item>();
public Test()
{
this.items.Add(new Item());
this.items.Add(new Item());
this.items.Add(new Item());
}
}
public class Item
{
public string item = "aa";
public string item2 = "bb";
}
class Program
{
static void Main(string[] args)
{
List<Item> items = new List<Item>();
items.Add(new Item());
items.Add(new Item());
items.Add(new Item());
string aaa = JsonTools.ObjectToJson(new Test());
Console.WriteLine(aaa);
string ccc = JsonTools.ObjectToJson(items);
Console.WriteLine(ccc);
Test aa = (Test)JsonTools.JsonToObject(aaa, new Test());
Console.ReadKey();
List<Item> bb = (List<Item>)JsonTools.JsonToObject(ccc, items);
Console.ReadKey();
}
}
public class JsonTools
{
// 从一个对象信息生成Json串
public static string ObjectToJson(object obj)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
MemoryStream stream = new MemoryStream();
serializer.WriteObject(stream, obj);
byte[] dataBytes = new byte[stream.Length];
stream.Position = 0;
stream.Read(dataBytes, 0, (int)stream.Length);
return Encoding.UTF8.GetString(dataBytes);
}
// 从一个Json串生成对象信息
public static object JsonToObject(string jsonString, object obj)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
MemoryStream mStream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
return serializer.ReadObject(mStream);
}
}
}