我有以下方法来保存一个对象到一个文件:
// Save an object out to the disk
public static void SerializeObject<T>(this T toSerialize, String filename)
{
XmlSerializer xmlSerializer = new XmlSerializer(toSerialize.GetType());
TextWriter textWriter = new StreamWriter(filename);
xmlSerializer.Serialize(textWriter, toSerialize);
textWriter.Close();
}
我承认这不是我写的(我只是把它转换成一个接受类型参数的扩展方法)。
现在我需要它把xml作为字符串返回给我(而不是保存到文件中)。我正在调查这件事,但我还没有弄清楚。
我想对于熟悉这些物体的人来说,这可能很简单。如果没有,我最终会弄清楚的。
我知道这不是问题的真正答案,但根据问题的投票数和接受的答案,我怀疑人们实际上是在使用代码将对象序列化为字符串。
使用XML序列化会给输出增加不必要的额外文本垃圾。
对于下面的类
public class UserData
{
public int UserId { get; set; }
}
它生成
<?xml version="1.0" encoding="utf-16"?>
<UserData xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<UserId>0</UserId>
</UserData>
更好的解决方案是使用JSON序列化(最好的方法之一是Json.NET)。
序列化一个对象:
var userData = new UserData {UserId = 0};
var userDataString = JsonConvert.SerializeObject(userData);
反序列化一个对象:
var userData = JsonConvert.DeserializeObject<UserData>(userDataString);
序列化的JSON字符串看起来像这样:
{"UserId":0}
我知道这不是问题的真正答案,但根据问题的投票数和接受的答案,我怀疑人们实际上是在使用代码将对象序列化为字符串。
使用XML序列化会给输出增加不必要的额外文本垃圾。
对于下面的类
public class UserData
{
public int UserId { get; set; }
}
它生成
<?xml version="1.0" encoding="utf-16"?>
<UserData xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<UserId>0</UserId>
</UserData>
更好的解决方案是使用JSON序列化(最好的方法之一是Json.NET)。
序列化一个对象:
var userData = new UserData {UserId = 0};
var userDataString = JsonConvert.SerializeObject(userData);
反序列化一个对象:
var userData = JsonConvert.DeserializeObject<UserData>(userDataString);
序列化的JSON字符串看起来像这样:
{"UserId":0}