![](/img/trans.png)
[英]JSON.Net serializing Enums to strings in dictionaries by default - how to make it serialize to int?
[英]Are there any attributes for serializing Enums as strings in Json.NET?
這是我到目前為止的內容:
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
namespace MyProject
{
[TestClass]
public class MyClass
{
[TestMethod]
public void VerifyJsonString()
{
var json = new JObject
{
new JProperty("Thing", Things.Cats)
};
var actual = json.ToString(Formatting.None);
const string expected = "{\"Thing\":\"Cats\"}";
Assert.AreEqual(expected, actual);
}
}
[JsonConverter(typeof(StringEnumConverter))]
public enum Things
{
Apples,
Bananas,
Cats
}
}
不幸的是,該測試失敗,因為它將其序列化為{"Thing":2}
。 我如何獲取它以正確地序列化枚舉? 我意識到我可以顯式調用.ToString()
,但我不想這樣做。 我寧願具有一些屬性,所以我不必每次都記住這樣做。
只需使用StringEnumConverter
var actual = json.ToString(Formatting.None,
new Newtonsoft.Json.Converters.StringEnumConverter());
編輯
有沒有辦法告訴它每次調用ToString()時自動使用該轉換器?
JsonConvert.DefaultSettings = () => new JsonSerializerSettings() {
Converters = new List<Newtonsoft.Json.JsonConverter>() { new Newtonsoft.Json.Converters.StringEnumConverter() }
};
var actual = JsonConvert.SerializeObject(json);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.