0

我正在使用Json Patch库来执行使用 REST 的 Patch 操作。现在我有以下 json 文档:

{
    "id":1,
    "ref":{"r1":1,"r2":2},  // header level
    "child":[
                {
                    "childId":1,
                    "ref":{"cc1":1,"cc2":2}   // line level
                },
                {
                    "childId":2,
                    "ref":{"cc3":2}    // line level
                }
            ]
}

现在根据Json Patch 文档,我们在标题级别可以使用以下路径更新ref r1/ref/r1

现在我正在尝试对行级child ref执行操作。由于 child 是一个数组,我可以使用 path /child/0/ref/cc1。但从路径中可以看出,我必须指定索引,在前一种情况下也为 0。

现在对于 API 消费者来说,要求他们给出数组的索引变得很困难。那么有什么方法可以自定义 json 补丁,这样我们就可以绕过索引要求,或者还有什么其他方法可以处理这种情况?

4

1 回答 1

1

我不是 JSON-Patch 方面的专家,我刚刚读过它。据我了解,最重要的部分是让 API 消费者在不给他们索引的情况下访问您的 JSON,

我认为hashmap在这种情况下会有所帮助,通过获取每个元素的索引并为其生成特定的 ID,然后您可以将它们保存在hashmap list 中每个索引都有自己的 ID

一个样品:

HashMap<String, String> elementIndex = new HashMap<[UUID], [elementIndex]>(); 你可以选择任何你想要的数据类型,而不是必须的字符串

在这种情况下,哪个索引号无关紧要,这完全与固定的 UUID 有关。因此,在这种情况下/child/{UUID}/ref/cc1,当您收到可以访问UUID并将其替换为其 elementIndex 的路径时,路径也将是,现在您有了正确的路径,即/child/0/ref/cc1

如果您想知道如何将动态值传递给 JSON 对象,有多种方法可以做到,这个问题会有所帮助:

如何将动态值传递给 JSON 字符串, -之前将 JSONObject 转换为字符串-

注意:不必用索引替换它,您可以按照自己喜欢的方式进行操作。

我相信如果有人对 JSON-patch 有更多了解,会有更好的答案。我希望这对您有所帮助,或者至少让您了解如何解决它。

于 2019-01-08T10:34:32.440 回答