我正在尝试使用Newtonsoft的JsonConvert将对象列表序列化为JSON.我的Marker类包含一个枚举,我正在尝试将它序列化为一个camelCase字符串.基于其他Stackoverflow问题,我正在尝试使用StringEnumConverter:
public enum MarkerType
{
None = 0,
Bookmark = 1,
Highlight = 2
}
public class Marker
{
[JsonConverter(typeof(StringEnumConverter)]
public MarkerType MarkerType { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这部分有效,但是当我调用时,我的MarkerType字符串是PascalCase:
var json = JsonConvert.SerializeObject(markers, Formatting.None);
Run Code Online (Sandbox Code Playgroud)
结果:
{
...,
"MarkerType":"Bookmark"
}
Run Code Online (Sandbox Code Playgroud)
我真正想要的是:
{
...,
"MarkerType":"bookmark"
}
Run Code Online (Sandbox Code Playgroud)
该StringEnumConverter文档提到一个CamelCaseText属性,但我不知道如何使用的传递JsonConverterAttribute.以下代码失败:
[JsonConverter(typeof(StringEnumConverter), new object[] { "camelCaseText" }]
Run Code Online (Sandbox Code Playgroud)
如何指定CamelCaseText为属性StringEnumConverter的JsonConverterAttribute?
Bri*_*ian 15
JsonConverterAttribute有两个构造函数,其中一个构造函数采用参数列表(Object[]).这将映射到该类型的构造函数.
由于StringEnumConverter的一个构造函数接受一个布尔值Object[],你只需要在属性行中传递它:
[JsonConverter(typeof(StringEnumConverter), typeof(CamelCaseNamingStrategy))]
public MarkerType MarkerType { get; set; }
Run Code Online (Sandbox Code Playgroud)
请注意,这仅限于构造函数; 有没有办法来设置Object[]上Object[]使用的Object[]语法,因为唯一的非默认的构造函数只需要一个参数Object[].
| 归档时间: |
|
| 查看次数: |
2760 次 |
| 最近记录: |