【问题标题】:Uppercase key value returned as lowercase in HTTP responseHTTP 响应中以小写形式返回的大写键值
【发布时间】:2020-11-11 15:31:20
【问题描述】:

在后端(.net 核心)我正在制作字典:

key 可以是 'TEST'、testAAAA'、'test'、'TEst' 所有可能的变体。

但是这个特定的结果返回为(图片来自邮递员):

如您所见,这里的关键是 'mo' 而不是 'MO' 。是否可以使其区分大小写?这样就不会变成小写了?

在我的 startup.cs 类中,我有:

                opt =>
                {
                    opt.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
                    opt.SerializerSettings.Converters.Add(new StringEnumConverter { CamelCaseText = true });
                  //  opt.SerializerSettings.Converters.Add(new UnixDateTimeConverter());
                    opt.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
                    opt.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
                });

【问题讨论】:

  • 据我所知,没有足够的上下文来弄清楚为什么它在屏幕截图中是小写的
  • 这需要您的序列化程序设置 - 您正在使用哪个库以及您将哪些选项传递给序列化程序。一些库默认小写,而其他库则没有。许多人确实使用了最常见的消费者是 JavaScript 的理由——其典型的命名标准是 camelCase,而不是您在 C# 中看到的 PascalCase。
  • 更新@McAden

标签: javascript c# json httpresponse


【解决方案1】:
opt.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
opt.SerializerSettings.Converters.Add(new StringEnumConverter { CamelCaseText = true });

您专门输入了一个解析器和一个转换器,告诉它将外壳更新为camelCase - 传入和传出。

您需要更改设置以使其不这样做,或者您需要实现一个自定义解析器,该解析器根据类执行不同的操作。

您可以在 newtonsoft 文档中查看自定义解析器 here 的一些示例。

【讨论】:

    猜你喜欢
    • 2019-11-30
    • 1970-01-01
    • 2018-12-17
    • 2018-01-10
    • 2020-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多