我正在尝试序列化类Person的实例:
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; }
}
Run Code Online (Sandbox Code Playgroud)
首先,我将对象序列化为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
Run Code Online (Sandbox Code Playgroud)
我希望最后一行打印对象的JSON格式,但事实并非如此.我怀疑StreamReader没有工作,因为MemoryStream的长度我认为数据已经有了,而ss的长度为0.我做错了什么?
您必须在读取之前将内存流的位置设置回到开头.
s.Position = 0;
应该解决你的问题.请参阅:http://msdn.microsoft.com/en-us/library/system.io.memorystream.position.aspx
| 归档时间: |
|
| 查看次数: |
5695 次 |
| 最近记录: |