StreamReader.ReadToEnd在C#中不起作用

本文关键字:不起作用 ReadToEnd StreamReader | 更新日期: 2023-09-27 18:25:41

我正在尝试序列化类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; }
}

首先,我将对象序列化为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 s的长度我认为已经有数据了,而ss的长度为0。我做错了什么?

StreamReader.ReadToEnd在C#中不起作用

在阅读之前,您必须将内存流的位置设置回开头。

s.位置=0;

应该可以解决你的问题。请参阅:http://msdn.microsoft.com/en-us/library/system.io.memorystream.position.aspx