c# - 将 Json 字符串反序列化为枚举 C#
问题描述
我正在对 stringEnumConverter 的自定义版本进行测试。但是当我反序列化时,我的测试一直在抛出。我搜索了堆栈溢出,但找不到我做错了什么。以下是我正在做的一个示例:
namespace ConsoleApp2
{
[Flags]
[JsonConverter(typeof(StringEnumConverter))]
enum TestEnum
{
none = 0,
obj1 = 1,
obj2 = 2
}
class Program
{
static void Main(string[] args)
{
var jsonString = "{none}";
var deserializedObject = JsonConvert.DeserializeObject<TestEnum>(jsonString);
}
}
}
我在反序列化行上遇到的异常是解析枚举时出现意外令牌 StartObject。
我怀疑这可能是因为我代表 json 字符串错误,我也尝试过"{\"none\"}", "{\"TestEnum\":\"none\"}", "{TestEnum:none}", "{none}" and "none"
.
解决方案
{none} 不是有效的 JSON,但 'none' 是有效的!
您应该尝试以下方法:
public class Program
{
public static void Main()
{
Console.WriteLine("Hello World");
var jsonString = "'none'";
var deserializedObject = JsonConvert.DeserializeObject<TestEnum>(jsonString);
Console.WriteLine(deserializedObject);
}
}
干杯!
推荐阅读
- python - sklearn.utils.class_weight 抛出“类应该包括所有可以在 y 中的有效标签”错误
- css - 更改 SVG 中的路径元素
- flutter - 在 Flutter 中使用 native_contact_picker 以相反的顺序返回电话号码
- octobercms - 如何在十月 CMS 中使用模型工厂?
- java - 带有@JsonView 的 Spring Json-Serialization 返回关联的空对象
- kdb - 选择 kdb 中值的出现次数
- json - VBA 宏:自动化返回 JSON 数据以查询可变数据的 VBA 宏
- python - Networkx:在 MultiDiGraph 上调用时,get_edge_data 返回意外结果
- opengl - glsl 插值限定符在哪里?
- r - 如何在函数中使用预设方法?(expand.grid)