使用System.Runtime.Serialization.Json.DataContractJsonSerializer
序列化對象時,有沒有辦法在JSON字符串中設置「根」或頂級密鑰?使用DataContractJsonSerializer設置JSON對象根
例如,這裏是一個類:
[DataContract]
public class Person
{
public Person() { }
public Person(string firstname, string lastname)
{
this.FirstName = firstname;
this.LastName = lastname;
}
[DataMember]
public string FirstName { get; set; }
[DataMember]
public string LastName { get; set; }
}
當使用序列化...
public static string Serialize<T>(T obj)
{
Json.DataContractJsonSerializer serializer =
new DataContractJsonSerializer(obj.GetType());
MemoryStream ms = new MemoryStream();
serializer.WriteObject(ms, obj);
string retVal = Encoding.Default.GetString(ms.ToArray());
ms.Dispose();
return retVal;
}
產生的JSON字符串看起來像:
{"FirstName":"Jane","LastName":"McDoe"}
有一種讓序列化器預先設置一些值的方法?
例如:
{Person: {"FirstName":"Jane","LastName":"McDoe"}}
當然,我可以簡單地改變我的Serialize
方法來包裝返回的JSON字符串,如:
string retVal = "{Person:" + Encoding.Default.GetString(ms.ToArray()) + "}";
但如果有某種方式來告訴我想知道序列化程序添加它? DataContract
屬性上的namespace
屬性似乎沒有幫助。
使用[JSON.NET](http://json.codeplex.com/),在使用JSON時,它會讓你的生活更加容易*我發現現成的.NET產品非常非常缺乏。 – casperOne
你爲什麼要把它包裝在類型中?你提出的建議對我來說似乎不是很好的JSON。我只想更進一步,只是創建一個數組。 {Persons:[Person]} – Jamie
其實我正在處理一個CouchDB客戶端..當你通過CouchDB API添加一個對象(JSON)時,它希望對象擁有一個標籤。我也會檢查出JSON.NET。 Thx – ZimSystem