【发布时间】:2019-04-25 13:49:11
【问题描述】:
我有一个类,当序列化时,我想作为没有键值对的单个字符串返回。一个字符串变成一个字符串。一个 int 变成一个 int。如何让我的类变成字符串?
查看 DataContract 和 Serializable,看起来这是不可能的。 SerializationInfo.AddValue(name, value) 设置强制您的整个对象采用键值方法。我只想返回“A and B”。
[DataContract]
public class MyObject
{
public int A { get; set; }
public int B { get; set; }
}
例如,当使用 DataContractJsonSerializer 进行序列化时,我希望它是:
4 and 2
没有
{
"A": 4,
"B": 2
}
假设我有一个使用这两种自定义类型的父类:
[DataContract]
public class Parent
{
[DataMember]
public MyObject One { get; set; }
[DataMember]
public MyObject Two { get; set; }
}
我想这样序列化:
{
"One": "4 and 2",
"Two": "6 and 8"
}
相反,我似乎唯一能做到的是:
{
"One": {
"A": 4,
"B": 2
},
"Two": {
"A": 6,
"B": 8
}
}
唯一可行的解决方案是在 Parent 上添加自定义序列化,相应地设置 One 和 Two,但我不想这样做,我希望我的新类在任何地方都被序列化为字符串。
我可以将一个类型序列化为单个返回值吗?还是除了 int 和 string 等内置类型之外的所有类型都必须序列化为对象?
【问题讨论】:
-
docs.microsoft.com/en-us/dotnet/standard/serialization/… 作为记录,这是我一直在阅读的文档。它没有(据我所知)指示如何执行此操作。只有键值对,因为它假设一种类型的所有序列化都分解为一个或多个 DataMembers。
标签: serialization serializable datacontract