問題タブ [json-patch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2278 参照

spring - Spring Data Rest - PATCH Postgres jsonb フィールド

短いバージョンは次のとおりです。Spring Data Rest PATCH メソッドを使用して、Postgres フィールドに含まれる JSON オブジェクトにパッチを適用する方法は?jsonb

ここに長いバージョンがあります。次のエンティティを検討してください。

jsonobjectPostgres タイプjsonbです。これらのゲッター/セッターは、ここで言及されている Spring Data Rest のためにシリアル化/逆シリアル化する方法です。また、これらの回答に記載されているように、フィールドに独自のタイプを与えようとしました。

私たちの目標は、Spring Data Rest を使用して、このフィールドに含まれる JSON オブジェクトにパッチを適用することです。

例えば:

期待される出力:

現在の出力:

Spring Data Rest は、リクエストされたネストされたプロパティにのみパッチを適用するために JSON オブジェクトのプロパティを掘り下げようとするのではなく、Example リソースにパッチを適用し、リクエストされた各属性の値をオーバーライドします。

これは、Spring Data Rest のapplication/merge-patch+jsonおよびapplication/json-patch+jsonメディア タイプのサポートが役立つと考えたときです。各メディア タイプの出力は次のとおりです。

application/merge-patch+json:

出力:

application/json-patch+json:

出力:

これは同じ考えに帰着します。エンティティ属性のみが検索され、完全にオーバーライドされるか、見つからないかのいずれかです。

問題は次のとおりです。Spring Data Rest がjsonbフィールドを処理していることを認識し、エンティティ属性を検索するだけでなく、JSON のネストされたプロパティを検索する方法はありますか?

注意:@Embeddable/@Embedded注釈は、ネストされたプロパティ名を知っていることを意味するため、回避される可能性が最も高く、jsonbフィールドへの関心が低下します。

読んでくれてありがとう。

0 投票する
1 に答える
2545 参照

rest - kubernetes 戦略的マージ パッチ

こんにちは、このドキュメントhttps://github.com/kubernetes/kubernetes/blob/master/docs/devel/api-conventions.md#strategic-merge-patchに従って、strategic-merge-patch を使用して JSON オブジェクトを部分的に更新しますパッチ REST API。ドキュメントには、オブジェクトを追加または削除できると書かれていますが、既存のJSONに新しいオブジェクトを追加するたびに、新しいオブジェクトを追加するのではなく、それを置き換えるだけです. OpenShift 3.2 でポッド定義を変更するためにこれを試みています。おそらく例を使って、誰でもそれがどのように機能するか教えてください。名前で値を削除できる削除操作も使用する必要があります。

0 投票する
0 に答える
247 参照

json - Golang 、サ​​ブドキュメントを更新し、json パスを見つける Couchbase

ソファベースのサブドキュメントを更新する最良の方法は何ですか? ネストされた json ドキュメントについて取り上げています。set name = 'Jon Doe'単純なフィールドは、ネストされた json documentのような構文を使用して簡単に更新できます。公式ドキュメントのすべてのページを読みましたが、すべてのページでkeysorというフェーズが使用されていましpathたが、これは json パスです。

したがって、 org.adddress.city.name のような複雑にネストされた json の場合、 json から動的またはプログラムでパスを見つける方法。6 ~ 7 レベルの深さのネストされた json を考えてみてください。ほとんど見られませんが、どうでしょうか。

カウチベースでのサブドキュメントの更新とは、ドキュメント全体の一部または一部を更新するか、ネストできる単純なフィールドを更新することを意味します。

私の方法は、どのjsonフィールドが更新されるかを教えてくれるMerge Jsonパッチを見つけることです。そのパッチにネストされたフィールドが含まれている場合、 "address": { "city": { "id": "25", "name": "Atlanta" } } mutate_in関数を使用してCouchbaseでこれを更新するにはaddress.city.id、 とであるパスが必要address.city.nameです。N1QL クエリでドキュメントを更新する場合でも、それらのパスを生成する必要があると思います。

次がどこまで続くかわからないため、再帰関数を使用してjsonからこれらのパスを生成しようとしています。ここに要点があります。

複雑なサブドキュメントを更新するパスを生成せずに他の方法があるかどうか知りたいです。

0 投票する
0 に答える
463 参照

c# - プロパティの命名を保持する JsonPatch (キャメルケース)

ここMicrosoft.AspNetCore.JsonPatchからNuGet経由で追加したものを使用していますが、API側でプロパティを照合しようとすると行き詰まりました。

シリアル化/逆シリアル化するときに、プロパティのキャメルケースの名前を保持する方法はありますか?

私の単純化されたオブジェクト:

JsonPatchDocument<MyObject>操作でを作成するとReplace、パスが取得されます/mycamelcasepropertypathしかし、API側では、プロパティによって(先頭の「/」なしで)ある種のスイッチケースを作成したい

問題は、キャメルケースを維持できるか、またはアクションを実行する必要があるプロパティ名を一致させる方法について別の方法を見つける必要があるかということです。どんなアイデアでも大歓迎です。

0 投票する
2 に答える
7391 参照

c# - JSON パッチを使用して辞書に値を追加する

概要

クライアントがマイクロコントローラーの状態を照会および変更できるようにする ASP.NET Core を使用して Web サービスを作成しようとしています。このマイクロコントローラーには、アプリケーション内でモデル化する多数のシステム (たとえば、PWM システム、アクチュエーター入力システムなど) が含まれています。

これらのシステムのすべてのコンポーネントには、 JSON パッチリクエストを使用してクエリまたは変更できる特定のプロパティがあります。たとえば、micro の 4 番目の PWM は、HTTP リクエストを使用して有効にすることができます。これをサポートするために、ライブラリを使用しています。{"op":"replace", "path":"/pwms/3/enabled", "value":true}AspNetCore.JsonPatch

私の問題は、定義名を特定のCANメッセージ定義に論理的にマップする必要がある新しい「CANデータベース」システムのJSONパッチサポートを実装しようとしていることです。これについてどうすればよいかわかりません。

詳細

下の図は、CAN データベース システムをモデル化したものです。CanDatabaseインスタンスには、形式の辞書が論理的に含まれている必要がありますIDictionary<string, CanMessageDefinition>

CAN データベース システム モデル

新しいメッセージ定義の作成をサポートするには、アプリケーションでユーザーが次のような JSON パッチ リクエストを送信できるようにする必要があります。

ここでmy_new_definitionは、定義nameを定義し、関連付けられたオブジェクトvalueを objectに逆シリアル化する必要があります。これは、新しいキーと値のペアとしてディクショナリに格納する必要があります。CanMessageDefinition CanDatabase

問題は、静的に型指定されたオブジェクトのプロパティ パスpathを指定する必要があることです...まあ、静的です (これに対する例外は、上記のように配列要素を参照できることです)。/pwms/3

私が試したこと

A. リロイ・ジェンキンスのアプローチ

うまくいかないことは忘れてください- 以下の実装を試してみました (動的な JSON パッチ パスをサポートする必要があるという事実にもかかわらず、静的型付けのみを使用しています) 何が起こるかを確認するためだけに.

実装

テスト

結果

指定したInvalidCastException変更を に適用しようとしたサイトで がスローされますJsonPatchDocument

サイト:

例外:


B. 動的な JSON パッチ適用に依存する

より有望な攻撃計画は、動的な JSON パッチ適用に依存しているように見えました。これには、のインスタンスに対してパッチ操作を実行することが含まれますExpandoObject。これにより、動的に型指定されたオブジェクトを扱っているため、JSON パッチ ドキュメントを使用してプロパティを追加、削除、または置換できます。

実装

テスト

結果

この変更を行うと、例外が発生することなくテストのこの部分を実行できますが、JSON パッチは何を逆シリアル化するかを認識していないため、データがではなくvalueとして辞書に格納されます。JObjectCanMessageDefinition

試行 B の結果

万が一情報をデシリアライズする方法をJSONパッチに「伝える」ことは可能でしょうか? JsonConverterおそらく、で属性を使用することに沿ったものDefinitionsですか?


概要

  • ディクショナリに値を追加する JSON パッチ リクエストをサポートする必要がある
  • 純粋に静的なルートを下ろうとしましたが、失敗しました
  • 動的 JSON パッチを使用してみました
    • これは部分的に機能しましたが、データがJObject意図したタイプではなくタイプとして保存されました
    • プロパティに適用して正しい型 (匿名型ではない) に逆シリアル化できる属性 (またはその他の手法) はありますか?
0 投票する
0 に答える
251 参照

java - RFC 6902 Json パッチでファイルのアップロードを処理する

ユーザーが自分の情報を更新できるアプリケーションに取り組んでいます。現時点では、基本的な HTML フォームを介してテキスト情報 (名、姓、電話番号など)RFC 6902 Json-patchを更新するために使用されます。

ユーザーは自分のプロフィールに画像を追加できるようになりました。Json-patchマルチパート操作を実行するために使用する方法はありますか?


注 :イメージはファイル システムに保存されます。したがって、クライアント側では、画像パスのみが提供され、フォームの送信後にのみ更新できます。私のdtoは以下の通りです:

私が考える解決策:

defaultMediaは String 型であるためJson-patch、イメージ パスの更新に使用できます。アイデアは、フォームが送信されたときにMultipart POST、画像をアップロードするリクエストを実行し、その URL を取得することです。次にdefaultMedia、myDTOを新しい URL に設定します。

このソリューションは、フォーム送信時にサーバー側でエラーが発生した場合に、未使用の画像を作成できます。そのため、ファイル システムをクリーンアップするために何かを追加する必要があります。

私のニーズを満たす簡単な解決策はありますか?


私は使用しています:

  • スプリング ブート: 1.5.1
  • 角度 2: 2.4.5