ASP.NET Core JSON Patch使用简述
2021-01-02 20:29
标签:效率 net 科技 通过 https ISE 更新 spn ide JSON Patch 是一种格式,用于指定要应用于资源的更新。 JSON Patch文档有一个** 操作数组。 每个操作标识一种特定类型的更改。 此类更改的示例包括添加数组元素或替换属性值。 PUT 和 PATCH 方法用于更新现有资源。 它们之间的区别是,PUT 会替换整个资源,而PATCH 仅指定更改。 参考地址:https://www.cnblogs.com/tcjiaan/p/9034869.htm 参看地址:https://docs.microsoft.com/zh-cn/aspnet/core/web-api/jsonpatch?view=aspnetcore-3.1 在上述 JSON 中: 下表显示了 JSON 修补程序规范中定义的支持操作: 在API 控制器中,JSON Patch操作方法: 遇到上述错误的原因为程序无法正常解析该json,因为没有找到 官方文档描述如下: ASP.NET Core 3.0 之前的版本中,默认设置使用通过 官方文档地址:https://docs.microsoft.com/zh-cn/aspnet/core/web-api/advanced/formatting?view=aspnetcore-3.1#add-newtonsoftjson-based-json-format-support ASP.NET Core JSON Patch使用简述 标签:效率 net 科技 通过 https ISE 更新 spn ide 原文地址:https://www.cnblogs.com/imtudou/p/13664084.html简述
JSON 数据示例
{
"baz": "qux",
"foo": "bar"
}
JSON Patch 数据示例
[
{ "op": "replace", "path": "/baz", "value": "boo" },
{ "op": "add", "path": "/hello", "value": ["world"] },
{ "op": "remove", "path": "/foo" }
]
使用JSON Patch 之后的资源结果
{
"baz": "boo",
"hello": ["world"]
}
Operation
说明
add
添加属性或数组元素。 对于现有属性:设置值。
remove
删除属性或数组元素。
replace
与在相同位置后跟 add 的 remove 相同。
move
与从后跟 add 的源到使用源中的值的目标的 remove 相同。
copy
与到使用源中的值的目标的 add 相同。
test
如果 path 处的值 = 提供的 value,则返回成功状态代码。
在Asp.net Core 中使用 JSON Patch
引用包
Microsoft.AspNetCore.JsonPatch
使用方式
HttpPatch
特性标签JsonPatchDocument
,通常带有 [FromBody]
ApplyTo()
方法应用更改API 控制器代码如下:
[Route("")]
[HttpPatch]
public async Task
PostMan 请求示例
PATCH
Content-Type
:application/json
[
{
"op":"replace",
"path":"/Company",
"value":"上海无敌土豆科技有限公司"
},
{
"op":"replace",
"path":"/Title",
"value":"小土豆"
}
]
数组处理方式
[
{
"op":"replace",
"path":"/Properies",
"value":
[
{
"Key":"fin_stage",
"Value":"A+轮",
"Text":"A+轮"
},
{
"Key":"fin_stage",
"Value":"C轮",
"Text":"C轮"
}
]
}
]
可能会遇到下面的错误
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"traceId": "|fcde218-4047aa49553937bd.",
"errors": {
"$": [
"The JSON value could not be converted to Microsoft.AspNetCore.JsonPatch.JsonPatchDocument`1[User.API.Entity.Models.AppUser]. Path: $ | LineNumber: 0 | BytePositionInLine: 1."
]
}
}
NewtonsoftJson
包的依赖;关于微软为何要移除该包的依赖,主要是为了提升执行效率;System.Text.Json
作为微软内置json处理,效率更高更快,但是目前大部分主流的包还是使用的NewtonsoftJson开发Newtonsoft.Json
包实现的 JSON 格式化程序。 在 ASP.NET Core 3.0 或更高版本中,默认 JSON 格式化程序基于 System.Text.Json。
Newtonsoft.Json
通过安装 Microsoft.AspNetCore.Mvc.NewtonsoftJson
NuGet 包并在中进行配置,可获得对基于的格式化程序和功能的支持 Startup.ConfigureServices
。public void ConfigureServices(IServiceCollection services)
{
services.AddControllers()
.AddNewtonsoftJson();
}
文章标题:ASP.NET Core JSON Patch使用简述
文章链接:http://soscw.com/index.php/essay/39660.html