我正在使用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,在标头级别,我们可以使用以下路径/ref/r1
更新 ref r1 。
现在,我正在尝试在子引用级别上执行操作。由于child是一个数组,因此我可以使用路径/child/0/ref/cc1
。但是,从 path 可以看出,在前面的情况下,我还必须指定索引为0。
现在,对于API使用者来说,要求他们提供数组的索引变得很困难。那么有什么方法可以自定义json补丁,以便我们可以绕过索引要求,或者还有什么其他方法可以处理这种情况?
答案 0 :(得分:0)
我不是JSON-Patch的专家,我只是读过它。 据我了解,最重要的部分是让API使用者在不给他们索引的情况下访问您的JSON,
我认为哈希图在这种情况下会有所帮助,方法是获取每个元素的索引并为其生成特定的ID,然后可以将其保存在哈希图列表中,每个索引都有其自己的ID 。
示例:
HashMap<String, String> elementIndex = new HashMap<[UUID], [elementIndex]>();
您可以选择所需的任何数据类型,而不必选择String
在这种情况下,哪个索引号无关紧要,这全都与固定的UUID有关。
因此,在这种情况下,该路径也将是/child/{UUID}/ref/cc1
,当您收到该路径时,您可以访问 UUID 并将其替换为其elementIndex,现在您有了正确的路径,即{{1} }
,如果您想知道如何将动态值传递给JSON对象,可以通过多种方式进行, 这个问题会有所帮助:
How to pass dynamic value to a JSON String,-将JSONObject转换为String之前-
注意:不必将其替换为index,您可以按照自己喜欢的方式进行操作。
如果有人对JSON补丁有更多了解,我相信会有更好的答案。 我希望这会有所帮助,或者至少会让您了解如何解决它。