我从一个Web API,它看起来像这样接收JSON数据:使用不同的名称和序列化与Json.Net
[
{
"id": 1
"error_message": "An error has occurred!"
}
]
我这个数据反序列化到以下类型的对象:
public class ErrorDetails
{
public int Id { get; set; }
[JsonProperty("error_message")]
public string ErrorMessage { get; set; }
}
后来在我的应用程序中,我想再次将ErrorDetails对象序列化为JSON,但使用属性名称ErrorMessage
而不是error_message
。所以结果看起来是这样的:
[
{
"Id": 1
"ErrorMessage": "An error has occurred!"
}
]
有没有一种简单的方法,我可以用Json.Net完成这项工作?也许使用自定义解析器和一些属性,如:
public class ErrorDetails
{
public int Id { get; set; }
[SerializeAs("ErrorMessage")]
[DeserializeAs("error_message")]
public string ErrorMessage { get; set; }
}
但是,解析器不告诉我什么时候序列化或反序列化。
你需要两班。每个类都是json生成或读取的合约 –
您可以在反序列化该JSON的同时使用['SnakeCaseNamingStrategy'](http://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_Serialization_SnakeCaseNamingStrategy.htm)。有关如何执行此操作的示例,请参阅[这里](https://stackoverflow.com/a/39090062/3744182)。 – dbc
这似乎很有趣。添加此作为答案请。 – Aetherix