标签: json-patch

如何在Angular 2应用程序中使用fast-json-patch?

我想在Angular 2应用程序中使用“ fast-json-patch”库(https://github.com/Starcounter-Jack/JSON-Patch)。

我尝试添加:

'fast-json-patch': 'vendor/fast-json-patch/dist/json-patch-duplex.min.js'

system-config.ts在下的文件中,map但导入时不起作用fast-json-patch

json json-patch angular

4
推荐指数
1
解决办法
1875
查看次数

将 JSON-Patch 转换为 MarkLogic JSON 补丁规范?

MarkLogic PATCH API 使用的JSON 补丁规范与 JSON-Path 标准 ( RFC 6902 )非常相似,但并不完全相同。例如,将节点添加到以下文档:

{
  "parent": {
    "child1": "c1-value",
    "child2": "c2-value"
  }
}
Run Code Online (Sandbox Code Playgroud)

MarkLogic 补丁:

{
  "insert": {
    "context": "/parent",
    "position": "last-child",
    "content": { "child3": "c3-value" }
  }
}
Run Code Online (Sandbox Code Playgroud)

JSON-Patch 标准:

{
  "op": "add",
  "path": "/parent/child3",
  "value": "c3-value"
}
Run Code Online (Sandbox Code Playgroud)

有没有办法自动将 JSON-Patch 翻译成 MarkLogic Patch?我的想法是利用诸如json-patch-gen自动生成 JSON-Patch 操作并将它们转换为 MarkLogic Patch 之类的库来更新 MarkLogic 中的文档。

或者,是否有一个 JavaScript 库可用于通过区分两个 JavaScript 对象来自动生成 MarkLogic 补丁?

json marklogic json-patch

4
推荐指数
1
解决办法
130
查看次数

根据rfc6902,RethinkDB对部分更新json文档有用吗?

请分享您对部分更新JSON文档的经验.现在我将我的JSON文档存储在MongoDB中,如下所示:

{
  id: ObjectId(507f191e810c19729de860ea),
  title: 'Sterling Archer',    
  comments: [
    {text: 'Comment text', tags: ['tag1', 'tag2', 'tag3']},
    {text: 'Comment test', tags: ['tag2', 'tag5']}
  ]  
}
Run Code Online (Sandbox Code Playgroud)

我需要经常使用rfc6902规范更新我的文档.现在,我没有优化的方式,看起来如下(我在这个例子中使用nodejs/express/mongoose和fast-json-patch模块):

var jsonpatch = require('fast-json-patch');

app.patch('/document/:id', function (req, res, next) {
   var document_id = req.params.id;

   // req.body.patch: { "op": "add", "path": "/comments/2", "value":  {text: 'Comment test3', tags: ['tag4']}" }
   var patches = req.body.patch; 

   // find document
   Document.findById(document_id, function (err, document) {
       // Applying patches
       jsonpatch.apply(document, patches);

       // Update whole document in MongoDB
       Document.update({_id: document_id}, …
Run Code Online (Sandbox Code Playgroud)

json mongodb node.js rethinkdb json-patch

3
推荐指数
1
解决办法
709
查看次数

使用带有 NetCore WebApi 和 System.Text.Json 的 JSON 合并补丁来区分 NULL 和不存在

我想使用JSON Merge Patch支持部分更新支持部分更新。领域模型基于始终有效的概念,并且没有公共设置器。因此我不能只将更改应用于类类型。我需要将更改翻译为特定命令。

由于类具有可为 null 的属性,我需要能够区分设置为 null 的属性和未提供的属性。

我知道JSON Patch。我可以用来patch.JsonPatchDocument.Operations浏览更改列表。JSON Patch 只是冗长且对客户端来说更加困难。JSON Patch 需要使用Newtonsoft.Json(Microsoft 声明有一个选项可以更改Startup.ConfigureServices为仅用于Newtonsoft.JsonJSON Patch ( https://learn.microsoft.com/en-us/aspnet/core/web-api/jsonpatch?view=aspnetcore-6.0 )。

Newtonsoft 支持IsSpecified -Properties,可用作 DTO 类中 JSON Merge Patch 的解决方案(How to make Json.NET set IsSpecifiedproperty for property with complex values?)。这可以解决问题,但再次需要 Newtonsoft。System.Text.Json 不支持此功能。有一个长达 2 年的开放问题(https://github.com/dotnet/runtime/issues/40395),但没什么可期待的。

有一篇文章描述了用于 Web API 的自定义 JsonConverter 的解决方案( https://github.com/dotnet/runtime/issues/40395)。该解决方案仍然适用于 NetCore 吗?

我想知道在填充 DTO 对象后是否有一个选项可以访问原始 json或控制器方法内的 json 对象。然后我可以手动检查是否设置了属性。Web Api 关闭了流,因此我无法再访问正文。似乎有一些方法可以改变这种行为( …

json json-patch asp.net-core-webapi system.text.json

3
推荐指数
1
解决办法
2111
查看次数

JsonPatchDocument没有正确绑定

我正在尝试在ASP.NET Core中使用JsonPatch来处理模型的部分更新,但是在将PATCH发送到Web API控制器操作时遇到绑定问题:

我正在使用一个小型库来发出PATCH请求:

axios
    .patch('http://localhost:8090/api/characters/1', { bookId: 1, name: 'Bob'})
    .then(function () { /*...*/ })
    .catch(function() { /*...*/ });
Run Code Online (Sandbox Code Playgroud)

这是原始请求:

PATCH http://localhost:8090/api/characters/6 HTTP/1.1
Host: localhost:8090
Connection: keep-alive
Content-Length: 30
Accept: application/json, text/plain, */*
Origin: http://localhost:3000
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36
Content-Type: application/json;charset=UTF-8
Referer: http://localhost:3000/library/book/2/character/6
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-AU,en;q=0.8,ru;q=0.6

{"bookId":1,"name":"Bob"}
Run Code Online (Sandbox Code Playgroud)

我的ViewModel:

public class UpdateCharacterViewModel
{
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

最后,Web API动作:

[Route("~/api/[controller]/{characterId}")]
[HttpPatch]
public IActionResult …
Run Code Online (Sandbox Code Playgroud)

json-patch asp.net-core axios

2
推荐指数
1
解决办法
2414
查看次数

迁移到 .Net Core 3 后 JsonPatchDocument 为空

我有一个带有多个补丁操作的 AspNetCore-WebApi-Project,它在 Core 2.2 中运行良好。迁移到 Core 3 后[FromBody] JsonPatchDocument<T>为空。我的获取/发布方法仍然按预期运行。

这是我的 Startup 的一部分:

    services.AddDbContext<MyContext>(options => options
                    .UseLazyLoadingProxies()
                    .UseNpgsql(Configuration.GetConnectionString("MyConnectionString"), 
                        opt => opt.UseNodaTime()));

    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new OpenApiInfo { Title = "My-API", Version = "v1" });
    });
    services.AddControllers()
        .AddNewtonsoftJson();
Run Code Online (Sandbox Code Playgroud)

这是我的行动:

[HttpPatch("{id}")]
public async Task<IActionResult> Patch(Guid id, 
                            [FromBody] JsonPatchDocument<MyViewModel> patchDocument)
{
    await this.service.HandlePatchAsync(id, patchDocument);
    return NoContent();
}
Run Code Online (Sandbox Code Playgroud)

这是正文内容:

[   
    {
        "op": "replace",
        "path": "/name",
        "value": "New Name" 
    },
    {
        "op": "replace",
        "path": "/country",
        "value": "Germany" 
    }
]
Run Code Online (Sandbox Code Playgroud)

有谁知道这里出了什么问题?

json.net json-patch .net-core asp.net-core .net-core-3.0

2
推荐指数
1
解决办法
1450
查看次数

asp.net - 如何获取/反序列化 JsonPatchDocument 的对象?

我可以使用 序列化JsonPatchDocument模型JsonConvert.SerializeObject(),但结果类型是字符串,如何将其转换为普通数组类型?或者如何将JsonPatchDocument对象直接放入数组?

var pathSerialized = JsonConvert.SerializeObject(patch);
Console.WriteLine(pathSerialized);

// Result as string: 
// "[{"value":"2018-08-30","path":"/openTo","op":"replace"},{"value":"2018-04-01","path":"/openFrom","op":"replace"}]" 
Run Code Online (Sandbox Code Playgroud)

c# json-patch asp.net-core

1
推荐指数
1
解决办法
3406
查看次数

如何将 json-patch 应用到 .net core 中的纯 json?

JsonPatchDocument.Apply方法适用于对象图,但我想将 json 补丁应用于普通 json。

例如,假设我有这个 json:

{ "name": "JSON Patch", "text": "OLD" } 
Run Code Online (Sandbox Code Playgroud)

如何使用 C# 应用这样的补丁?

[ { "op": "replace", "path": "/text", "value": "NEW VALUE" } ] 
Run Code Online (Sandbox Code Playgroud)

这是如何使用 C# 和 .NET 核心完成的?

c# json json-patch .net-core

1
推荐指数
1
解决办法
949
查看次数