JSON 奇数字符序列化

JSON serialization with odd characters

有一个最初在 Rails 上用 Ruby 编写的应用程序为多个移动应用程序提供 API 服务;管理层已决定将 RoR 服务的功能添加到基于 .NET 的主项目中。好的,没什么大不了的,我们只是在 WebAPI 中复制服务调用,对吧?能有多难?

显然 Ruby 一方的某个人认为将额外的字符放入 api 响应对象中是个好主意。我看到的是:

{
    ...
    {"enabled?":true}
    ...
}

...所以我在这里,对此摇头,并希望有一种技术可以将 .NET 对象序列化为 JSON,其中变量名称带有问号等等。有没有办法做到这一点,或者我们是否必须为这些对象中的每一个构建自定义序列化程序?将移动应用程序更改为对平台更友好 JSON 在这一点上确实不可取。我们使用JSON.Net,但如果有其他方法可以做到这一点。

在你的 c# 对象中,给你的 属性 一个 valid name (such as Enabled in this case) and then specify the JSON property name in the Name property of a DataMember attribute, or the PropertyName property of a JsonProperty 属性:

[DataContract]
public class MyClass
{
    [DataMember(Name="enabled?")]
    public bool Enabled { get; set; }
}

或者

public class MyClass
{
    [JsonProperty("enabled?")]
    public bool Enabled { get; set; }
}

如果您使用 DataMemberAttribute,请不要忘记添加 DataContract attribute, and that data contract serialization is opt-in, so you'll need to add DataMember to all the attributes you want to serialize. Having done so, however, you'll gain compatibility with the DataContractSerializers,这在以后可能会有用。