0

JSONパッチについて読んでいます。ただし、問題の解決策が見つかりません。リストを追加する必要がある JSON があります。

例えば:

{
  "orders": "food"
}

このアイテムのリストを orders 属性の下に挿入する必要があります。

{
  "items": [
  {
   "item": "ORD-X11",
   "buyer": "BY-001-001",
   "date": "060220"
  }
 ]
}

したがって、期待される結果は次のとおりです。

{
  "orders": "food"
  "items": [
  {
   "item": "ORD-X11",
   "buyer": "BY-001-001",
   "date": "060220"
  }
 ]
}

これはJSONパッチの私のコードです:

{"op": "add", "path": "/items",
                      "value": {}
                      }
{"op": "add", "path": "/items/0",
                      "value": {"item": "ORD-X11"}
                      }
{"op": "add", "path": "/items/0",
                      "value": {"buyer": "BY-001-001"}
                      }
{"op": "add", "path": "/items/0",
                      "value": {"date": "060220"}
                      }

追加しようとしている "/items" がドキュメント パスにないというエラーが表示されます。

4

1 に答える 1

0

また、最近 JSON-Patch に遭遇したばかりで、この質問は興味深いものでした。fast-json-patch ドキュメントを読んだ後、いくつかの試行錯誤を経て、私はあなたの問題に対するこの解決策を思いつきました:

.as-console-wrapper { max-height: 100% !important; top: 0; }
<script type="module">
  import * as jsonpatch from 'https://cdn.jsdelivr.net/npm/fast-json-patch@3.0.0-1/index.mjs';
  import { applyOperation } from 'https://cdn.jsdelivr.net/npm/fast-json-patch@3.0.0-1/index.mjs';
  
  var document = {"orders": "food"};
  var patch = [
      {"op": "add", "path": "/items",
          "value": [{"item": "ORD-X11","buyer": "BY-001-001","date": "060220"}]
      }
  ];
  document = jsonpatch.applyPatch(document, patch).newDocument;
  console.log(document);
</script>

ご覧のとおり、サブオブジェクト全体に一度にパッチを適用できます。素晴らしい。

于 2020-11-12T03:48:15.980 に答える