首先我想说的是:也许这些文章网络上很多,但是 我是个有着多年开发经验的人,我一定会用最简单直接有用的方式阐述问题,
这样对自己是个锻炼,对别人也节省时间。
1、引入程序集System.Runtime.Serialization(在 System.Runtime.Serialization.dll 中),添加命名空间
System.Runtime.Serialization.Json
2、重要方法
/*将json字符串转化为实例*/
public static class JSON {
public static T parse<T>(string jsonstr) {
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonstr))) {
return (T)new DataContractJsonSerializer(typeof(T)).ReadObject(ms);
}
}
/*将实例转化为JSON字符串*/
public static string ToString(object jsonObject)
{
using (var ms = new MemoryStream())
{
new DataContractJsonSerializer(jsonObject.GetType()).WriteObject(ms, jsonObject);
return Encoding.UTF8.GetString(ms.ToArray());
}
}
3、例子
using System;using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ProcessCenter.Comm;
using System.Text;
using System.Runtime.Serialization;//DataContract DataMember的命名空间
public partial class _Default : System.Web.UI.Page
{
[DataContract]
public class Person
{
[DataMember(Order = 0, IsRequired = true)]
public string Name { get; set; }
[DataMember(Order = 1)]
public int Age { get; set; }
[DataMember(Order = 2)]
public bool Alive { get; set; }
[DataMember(Order = 3)]
public string[] FavoriteFilms { get; set; }
[DataMember(Order = 4)]
public Person Child { get; set; }
}
protected void Page_Load(object sender, EventArgs e)
{
var p1 = new Person
{
Age = 20,
Alive = true,
Name = "liguangsi",
FavoriteFilms = new[] { "apple", "orange" }
};
var p2 = new Person
{
Age = 20,
Alive = true,
Name = "liguangsi",
Child=p1
};
//转化为字符串
string strjson = JSON.ToString(new List<Person>() { p1, p2 });
//或string strjson = JSON.ToString(new Person[] { p1, p2 });
//将字符串转化为实例
List<Person> objperson = JSON.parse<List<Person>>(strjson);
}
//
}