0

RESTを使用してパッチ操作を実行するためにJson 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 doc に従って、ヘッダー レベルで、次のパスを使用してref r1/ref/r1を更新できます。

今、行レベルの子 refで操作を実行しようとしています。child は配列なので、 path を使用できます/child/0/ref/cc1しかし、パスからわかるように、前のケースでは 0 であるインデックスも指定する必要があります。

現在、API コンシューマーが配列のインデックスを提供するように求めるのは難しくなっています。では、インデックス要件をバイパスできるように json パッチをカスタマイズする方法はありますか、またはこのシナリオを処理する他の方法は何ですか?

4

1 に答える 1

1

私は JSON-Patch の専門家ではありません。それについて読んだだけです。私が理解したことから、最も重要な部分は、API コンシューマーがインデックスを与えずに JSON にアクセスできるようにすることです。

この場合、各要素のインデックスを取得して特定の ID を生成することでhashmapが役立つと思います。次に、それらをhashmap listに保存できます。各インデックスには独自の ID があります

サンプル:

HashMap<String, String> elementIndex = new HashMap<[UUID], [elementIndex]>(); 必要な文字列ではなく、必要なデータ型を選択できます

この場合、インデックス番号は問題ではなく、固定 UUID がすべてです。したがって、この場合のパスは、 UUID/child/{UUID}/ref/cc1にアクセスしてそれを elementIndex に置き換えることができるパスを受け取ると、正しいパスが得られます。/child/0/ref/cc1

動的な値を JSON オブジェクトに渡す方法を知りたい場合は、複数の方法があります。この質問が役に立ちます。

JSON文字列に動的な値を渡す方法-事前にJSONObjectを文字列に変換-

: index に置き換える必要はありません。好きなように置き換えることができます。

そして、誰かが JSON-patch についてもっと知っていれば、より良い答えがあると思います。それがお役に立てば幸いです。または、少なくとも解決方法についてのアイデアを提供していただければ幸いです。

于 2019-01-08T10:34:32.440 に答える