代码之家  ›  专栏  ›  技术社区  ›  YK S

根据需要定制json补丁

  •  0
  • YK S  · 技术社区  · 6 年前

    我正在使用 Json Patch 使用rest执行修补程序操作的库。现在我有了以下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 doc 我们在页眉级可以更新 RE1 R1 使用以下路径 /ref/r1 .

    现在我试着在线路上执行操作 儿童裁判 . 因为子是数组,所以我可以使用路径 /child/0/ref/cc1 . 但从中可以看出 路径 我还必须指定索引,在前面的例子中是0。

    现在对于api用户来说,要求他们给出数组的索引变得很困难。那么,有没有办法定制JSON补丁,这样我们就可以绕过索引要求,或者其他什么方法来处理这个场景?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Wael Azar    6 年前

    我不是json补丁的专家,我刚刚读过。 据我所知,最重要的是让api用户访问json而不给他们索引,

    我想 散列表 在这种情况下,通过获取每个元素的索引并生成一个特定的ID,就可以将它们保存在 哈希表列表 , 每个索引都有自己的id .

    样品:

    HashMap<String, String> elementIndex = new HashMap<[UUID], [elementIndex]>(); 您可以选择所需的任何数据类型,而不必选择字符串。

    在这种情况下,哪个索引号无关紧要,关键在于固定的uuid。 所以在这种情况下 /child/{UUID}/ref/cc1 此外,当您接收路径时,您可以访问 UUID 用它的元素索引替换它,现在您有了正确的路径 /child/0/ref/cc1

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

    How to pass dynamic value to a JSON String - 将jsonobject转换为字符串 -

    注释 没有必要用索引代替它,你可以按照你喜欢的方式去做。

    我相信如果有人知道更多关于json补丁的信息,会有更好的答案。 我希望这是有帮助的,或者至少给你一个如何解决它的想法。