2
我試圖序列化Person類的一個實例:StreamReader.ReadToEnd不在C#中工作?
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Soap;
[Serializable]
public class Person
{
public string FirstName{ get; set; }
public string MiddleName{ get; set; }
public string LastName{ get; set; }
}
首先,我序列化的對象JSON並寫上的MemoryStream然後將其轉換爲字符串,將其顯示在頁面上。
@using System.Runtime.Serialization.Json
@using System.Text
@{ Layout = null;
Person person = new Person();
person.FirstName = "John";
person.MiddleName = "Parker";
person.LastName = "Santos";
MemoryStream s = new MemoryStream();
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Person));
ser.WriteObject(s, person);
string ss;
using(StreamReader sr = new StreamReader(s, new UnicodeEncoding(), false))
{
ss = sr.ReadToEnd();
}
}
@ss
我期待最後一行打印對象的JSON格式,但它沒有。我懷疑StreamReader不工作,因爲MemoryStream有一個長度,我認爲數據已經存在,而ss長度爲0.我做錯了什麼?
:D非常感謝!我之前看到了Position屬性並忽略了它,我認爲流的位置已經是0了。也許'WriteObject'方法導致位置改變,不是嗎? – dpp 2012-02-25 07:07:19
準確地說,一個寫和讀共享流中的相同位置。 – Polity 2012-02-25 07:08:54