我在C#DataSet对象中有一些数据 . 我现在可以使用像这样的Json.net转换器来序列化它
DataSet data = new DataSet();
// do some work here to populate 'data'
string output = JsonConvert.SerializeObject(data);
但是,这会在打印到.json文件时使用 data
中的属性名称 . 我想将属性名称更改为不同的名称(例如,将'foo'更改为'bar') .
在Json.net documentation,在'Serializing and Deserializing JSON'→'Serialization Attributes'下,它说"JsonPropertyAttribute... allows the name to be customized" . 但没有例子 . Does anyone know how to use a JsonPropertyAttribute to change the property name to something else?
(Direct link to documentation)
Json.net的文档似乎很少 . 如果你有一个很好的例子,我会尝试将它添加到官方文档中 . 谢谢!
3 回答
您可以使用
[JsonProperty]
属性来装饰您希望控制其名称的属性,该属性允许您指定其他名称:文件: Serialization Attributes
如果您无权访问类以更改属性,或者不想始终使用相同的重命名属性,则还可以通过创建自定义解析程序来重命名 .
例如,如果你有一个名为
MyCustomObject
的类,它有一个名为LongPropertyName
的属性,你可以使用这样的自定义解析器......然后调用序列化并提供解析器
结果将缩短为{"Short":"prop value"},而不是{"LongPropertyName":"prop value"}
有关自定义解析器的更多信息here
还有另一种方法可以使用特定的NamingStrategy,它可以通过用
[JSonObject]
或[JsonProperty]
进行装饰来应用于类或属性 .有预定义的命名策略,如
CamelCaseNamingStrategy
,但您可以实现自己的命名策略 .