[.NET]C#程序开发中如何将C#类(对象)序列化成对应的JSON字符串(.NET 4.0版本)?
问题描述
比如当前有如下两个实体类,分别为:
class MyDate
{
int year, month, day;
}
class Lad
{
string firstName;
string lastName;
MyDate dateOfBirth;
}
现在需要将以上两个类的实体对象序列化成如下的JSON字符串:
{
"firstName":"Markoff",
"lastName":"Chaney",
"dateOfBirth":
{
"year":"1901",
"month":"4",
"day":"30"
}
}
方案一
可以使用 JavaScriptSerializer
类实现需求的序列化操作。
首先,引用命名空间 System.Web.Extensions
:
using System.Web.Script.Serialization;
然后调用 JavaScriptSerializer
类实例对象的 Serialize
方法,如下:
var json = new JavaScriptSerializer().Serialize(obj);
一个完整的使用示例如下:
using System;
using System.Web.Script.Serialization;
public class MyDate
{
public int year;
public int month;
public int day;
}
public class Lad
{
public string firstName;
public string lastName;
public MyDate dateOfBirth;
}
class Program
{
static void Main()
{
var obj = new Lad
{
firstName = "Markoff",
lastName = "Chaney",
dateOfBirth = new MyDate
{
year = 1901,
month = 4,
day = 30
}
};
var json = new JavaScriptSerializer().Serialize(obj);
Console.WriteLine(json);
}
}
方案二
我们也可以使用第三方的JSON序列化类库组件,比如来自 Newtonsoft 的JSON序列化及反序列化组件 JSON.Net
,在C#程序中处理类似的序列化与反序列化操作就非常简单和容易了,如:
Newtonsoft.Json.JsonConvert.SerializeObject(new {foo = "bar"})
比如此案例中的示例使用 JSON.Net
组件实现的代码如下:
var obj = new Lad
{
firstName = "Markoff",
lastName = "Chaney",
dateOfBirth = new MyDate
{
year = 1901,
month = 4,
day = 30
}
};
var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(obj);
反序列化:
var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<Lad>(jsonString );
具体的文档可以参考:Serializing and Deserializing JSON
方案三
当然,你也可以使用 ServiceStack
的JSON序列化组件,使用方法如下:
首先,使用 ServiceStack.Text
的命名空间:
using ServiceStack.Text;
然后,使用 ServiceStack
的序列化器来序列化C#实体对象,如:
string jsonString = new { FirstName = "James" }.ToJson();
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册