- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试将 Json.NET 与 System.Net.Http.HttpClient 一起使用以发送具有枚举属性的对象,但是枚举始终序列化为整数值而不是等效字符串。
我已尝试按照此处的说明进行操作:
通过将 StringEnumConverter 的实例添加到 JsonSerializerSettings 并尝试使用 [JsonProperty(ItemConverterType = typeof(StringEnumConverter))]
装饰枚举属性,这两种方法在我的示例中似乎都不起作用.
我使用的是 Json.NET 5.0.8 版
谁能告诉我我做错了什么?这是一个示例控制台应用程序,用于复制显示全局序列化程序设置和装饰属性:
谢谢。
using System;
using System.Net.Http;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
HttpClient client = new HttpClient { BaseAddress = new Uri("http://test-uri.com") };
JsonConvert.DefaultSettings = (() =>
{
var settings = new JsonSerializerSettings();
settings.Converters.Add(new StringEnumConverter());
return settings;
});
var data = new TestData { Enum = TestEnum.Hello };
// The following posts: {"Enum":0}
// Shouldn't it post {"Enum":"Hello"} instead?
var result = client.PostAsJsonAsync("/test", data).Result;
}
public class TestData
{
[JsonProperty(ItemConverterType = typeof(StringEnumConverter))]
public TestEnum Enum { get; set; }
}
public enum TestEnum
{
Hello,
World
}
}
}
我已经用 Fiddler 检查了这个,它发布了:{"Enum":0}
而不是 {"Enum":"Hello"}
我是这样的会期待。
最佳答案
JsonPropertyAttribute
属性的 ItemConverterType
属性是用于集合项的转换器。您应该使用 JsonConverterAttribute
属性。
public class TestData
{
[JsonConverter(typeof(StringEnumConverter))]
public TestEnum Enum { get; set; }
}
关于c# - Json.NET StringEnumConverter 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19731192/
我们正在实现 .NET Core 3.1 API,并且根据 this doc 使用 Microsoft.AspNetCore.Mvc.NewtonsoftJson .我们正在处理枚举,我们需要字符串表
我正在尝试使用 Newtonsoft 的 JsonConvert 将对象列表序列化为 JSON。我的 Marker 类包含一个枚举,我正在尝试将其序列化为驼峰式字符串。基于其他 Stackoverfl
是否可以使用 Json.NET 生成一个模式,将枚举值输出为字符串而不是整数?我注意到有人 fork 了代码来执行此操作,但想知道是否有其他方法可以执行此操作,或者是否有任何计划执行此操作。 编辑 需
我有一个带有 POST 方法的简单 Controller 。 我的模型有一个枚举类型的属性。 当我发送有效值时,一切都按预期进行 { "MyProperty": "Option2"} 或 { "M
是否可以使用 Json.NET 生成一个将枚举值输出为字符串而不是整数的模式?我注意到有人 fork 了代码来执行此操作,但想知道是否有任何其他方法可以执行此操作,或者是否有任何计划执行此操作。 编辑
我正在尝试将 Json.NET 与 System.Net.Http.HttpClient 一起使用以发送具有枚举属性的对象,但是枚举始终序列化为整数值而不是等效字符串。 我已尝试按照此处的说明进行操作
我有一个枚举: public enum FilterOperator { [EnumMember(Value = "eq")] Equals,
我正在尝试按如下方式序列化一个匿名类: public enum ErrorCode { A, B, C } var response = JObject.FromObject(
我使用一个返回字符串值的 API,如下所示: some-enum-value 我尝试将这些值放在 enum 中,因为默认的 StringEnumConverter 没有做我想要的,即用一些额外的逻辑来
使用以下方法装饰您的枚举时: [JsonConverter(typeof(StringEnumConverter))] public EventEntity Entity { get; set; }
我有以下模型: public enum Status { [Display(Name = "Awaiting Approval")] AwaitingApproval, Rej
我想用 json.net 将枚举反序列化为它们的字符串表示形式,反之亦然。我能想出告诉框架应用其 StringEnumConverter 的唯一方法是像这样注释有问题的属性: [JsonConvert
我无法理解我在 Mac 上使用 Json.Net 时遇到的问题。我正在尝试序列化/反序列化对象,如下所示。 代码在 Windows 上运行没有问题,但在 Mac 上生成 Newtonsoft.Json
我是一名优秀的程序员,十分优秀!