我有一個c#類,我正在嘗試使用正確序列化。該屬性是枚舉類型,我希望將值序列化為“枚舉名稱的小寫版本”。有一個可用于在屬性上指定此屬性,還有一個預(yù)寫,但我需要在該轉(zhuǎn)換器上指定CamelCaseNamingStrategy,但我無法計算出語法。Newtonsoft.JsonJsonConverterAttributeStringEnumConverter我試圖在屬性本身上分配它:public class C{ [JsonConverter(typeof(StringEnumConverter),NamingStrategy=typeof(CamelCaseNamingStrategy))] public ChartType ChartType { get; set; }}我也嘗試過以類似的方式將其添加到枚舉類型本身:[JsonConverter(typeof(StringEnumConverter),NamingStrategy=typeof(CamelCaseNamingStrategy))]public enum ChartType { Pie, Bar }但是語法是錯誤的。我在Newtonsoft文檔中找不到任何這方面的例子。所需的序列化將是:或"ChartType":"pie""ChartType":"bar"有什么想法嗎?謝謝。
3 回答

MMMHUHU
TA貢獻1834條經(jīng)驗 獲得超8個贊
好的,這似乎有效:
[JsonProperty("type")]
[JsonConverter(typeof(StringEnumConverter),
converterParameters:typeof(CamelCaseNamingStrategy))]
public ChartType ChartType { get; }
由于命名策略是使用轉(zhuǎn)換器參數(shù)應(yīng)用的屬性。這得到了我想要的輸出。我認為這方面的一個例子在Newtonsoft文檔中很有用。StringEnumConverter

開滿天機
TA貢獻1786條經(jīng)驗 獲得超13個贊
另一種可能的解決方案是使用JsonSerializerSettings
var settings = new JsonSerializerSettings
{
Converters = new List<JsonConverter> {
new StringEnumConverter(new CamelCaseNamingStrategy())
}
};
var result = JsonConvert.SerializeObject(obj, settings);
- 3 回答
- 0 關(guān)注
- 185 瀏覽
添加回答
舉報
0/150
提交
取消