在序列化数据成员时,是否有任何C#属性阻止字符转换?

在序列化数据成员时,是否有任何C#属性阻止字符转换?,c#,serialization,C#,Serialization,我有一个包含字符串属性的对象,该属性返回一个包含HTML标记的字符串: [DataMember] public string SomeProperty { return "<HTMLTag>"; } [DataMember] 公共字符串属性 { 返回“”; } 当此对象由DataContractJsonSerializer.WriteObject()序列化时,'字符将转换为'和'。是否有任何属性(或其他东西)可以防止这种情况发生?我知道WriteRaw会起作用,但我无法更

我有一个包含字符串属性的对象,该属性返回一个包含HTML标记的字符串:

[DataMember]
public string SomeProperty
{
    return "<HTMLTag>";
}
[DataMember]
公共字符串属性
{
返回“”;
}
当此对象由
DataContractJsonSerializer.WriteObject()
序列化时,
'
字符将转换为
'
'
。是否有任何属性(或其他东西)可以防止这种情况发生?我知道
WriteRaw
会起作用,但我无法更改
DataContractJsonSerializer。WriteObject()
是我无法控制的。谢谢。

这里有一个。提到这一点,您可以将HTML编码为不同的数据,传输然后解码。

使用

string noEncoding = new XElement("foo", new XCData("a < b")).ToString();
string noEncoding=new-XElement(“foo”,new-XCData(“a
这将产生

<foo><![CDATA[a < b]]></foo>


写入序列化的XML将使XML无效,因为缺少结束标记。这听起来可能很有趣,但DataContractJsonSerializer确实是从XmlObjectSerializer派生的,这解释了观察到的行为。如果您只需要Json(反)序列化,那么使用Json.NET可能是另一种选择。返回的字符串只是一个示例。我只关心字符转换。类似的问题我必须使用DataContractJsonSerializer.WriteObject()。我不能把它换成别的东西。这是我无法控制的。