【问题标题】:difference post structure in .net core 2.2 and 3.0.net core 2.2 和 3.0 中的不同帖子结构
【发布时间】:2020-02-04 10:38:25
【问题描述】:

在我的 .net core 2.2 项目中,我使用邮递员来测试 API。
在邮递员
(1) 设置内容类型:application/json
(2) 正文 => 原始 & json 我发送这样的简单 JavaScript 对象:

{
    pageSize : 10,
    pageNumber : 0,
    sortType : 'nn',
    keyword : 'ff',
    cityCode : 1,
    citySlug : 'f',
    priceRange : 'ff',
    starRange : 'fff',
    hotelFacilityRange : 'fffff',
    roomFacilityRange : 'fs',
    hotelGroup : 'dss',
    hotelType : 'sss',
    foodType : 'ss'
}

但昨天我升级到 .net core 3.0
现在我必须发送 json 字符串,并且不接受简单的对象。
怎么了?
当我发送简单对象时,我在 api 中得到空值,但是当我转换为 json "pageSize" : 10, "pageNumber": 0 ... 它有效!!!

【问题讨论】:

  • 它应该工作!你能发布API方法吗?
  • 不是真的,但是当我更改为 json ("pageSize" ...) 时,它可以工作,.net coore 3.0 中的某些内容发生了变化

标签: javascript asp.net-core postman


【解决方案1】:

但昨天我升级到 .net core 3.0,现在我必须发送 json 字符串,并且不接受简单对象。

确实如此。我可以重现与您相同的问题。但我不认为这是一个错误,因为 ASP.NET Core 3.0 现在使用 System.Text.Json 作为序列化/反序列化 json 的默认工具。见official docs

但是,根据json.org,字符串应该以" 开头,而不是'。 :


(来源:json.org

简而言之,过去的方式不是标准的 JSON 表示。您可以这样做的原因是JSON.NET 会自动为您完成。


要启用旧行为,您可以关注Microsoft's advice here

  1. 添加对JSON.NET的包引用
  2. 为 MVC 添加.AddNewtonsoftJson()
 public void ConfigureServices(IServiceCollection services)
 {
     services.AddControllersWithViews().AddNewtonsoftJson();
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 2020-01-26
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    • 1970-01-01
    相关资源
    最近更新 更多