問題タブ [jsonidentityinfo]

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 に答える
8832 参照

javascript - JsonIdentityInfo を含む JavaScript で Jackson オブジェクトを逆シリアル化する

こんにちは(私の英語でごめんなさい)

SPRING MVCでjsonを生成するWebサービスを使用するangularjsフロントエンドWebサイトに取り組んでいます。spring mvc はシリアライゼーションに JsonIdentityInfo オプションを使用するため、各オブジェクトは json に 1 回だけ書き込まれ、参照が使用されるたびに書き込まれます。たとえば、同じオブジェクト「コンポーネント」を使用する 2 つの「コンピューター」があるため、Spring は ID を配置します。最初のコンポーネント ("@componentID": 2) および 2 番目のコンポーネントの場合は id ( 2 ) :

私が欲しいもの:

これを行うコードを何度も検索しましたが、何も見つかりませんでした。

この動作を削除するために Web サービスを編集することはできません。クライアント側で json を javascript または jquery (または別のライブラリ) で編集して、参照を実際の参照オブジェクトに置き換えることはできますか? (データは実際にはより複雑で深く、オブジェクトには 3 レベルのサブオブジェクトがあります)。

どうもありがとう。

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

android - JsonMappingException: Objectify の OneToMany 関係での無限再帰

(4.0.3b)Google App Engineと一緒に使用している Android アプリのバックエンドを提供します。Objectify

バックエンドには、 (友達)関係を持つ単純なUserエンティティがあります。list of Users

たとえば、次のユーザーがデータベースに保存されている場合:user1およびuser2

user1user2友達リストにいる、またはその逆

エンドポイントからUser オブジェクト (上記のサイクル参照を持つ) をフェッチしようとすると、Android クライアントは次の例外をスローします。

com.google.appengine.repackaged.org.codehaus.jackson.map.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: java.util.ArrayList[0]...

この投稿Infinite Recursion with Jackson JSON and Hibernate JPA issue@JsonIgnoreでは、フィールドまたは getter/setter メソッドでの使用を推奨しています。しかし、クライアント側では、(生成されたクライアント ライブラリ オブジェクトから) これらのゲッター/セッター メソッドによってフレンド リストにアクセスする必要があるため、これは役に立ちません。

もう 1 つのヒントは、 @JsonManagedReference と @JsonBackReference を使用することですこれは、私の場合は適用できず、同じフィールドを指すためです。ManagedReferenceBackReferencefriends

私の問題を解決できると思うのは@JsonIdentityInfo Annotation ですJackson 2.0

私の問題は、Google App Engine でこのアノテーションを使用する方法がわからないことです。GAE は を使用しますがjackson-core-asl-1.9.11、残念ながら はありません。これは@JsonIdentityInfo明らかに 2.0 未満のバージョンに依存しているためです。

Google App Engine で最新の Jackson バージョン (2.4) を使用して @JsonIdentityInfo 機能を使用する方法を知っている人はいますか?

または、私の問題に対するより良いアプローチがありますか?

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

json - @JsonIdentityInfo を使用する場合、Jackson による JSON シリアル化でオブジェクト参照を非表示にする

カテゴリとアイテムの 2 つのエンティティがあります。

カテゴリ エンティティ:

アイテム エンティティ:

次のような左結合クエリを実行した後: "SELECT c from Category c Left JOIN FETCH c.itemList il"

結果を取得し、結果に対して休止状態対応の JSON シリアル化を実行しました。

私の HibernateAwareObjectMapper は次のとおりです。

HibernateAwareSerializerFactory は次のとおりです。

私のディスパッチャーサーブレットでは、次のように書いています。

だから、私はこのようなJSONを持っています:

この JSON には、Category Entity のオブジェクト ID である "@id": "971ef69e-1605-46f2-8234-b595e38be11a" があります。

また、Item Entity の Object Id である "@id": "75a3a7e5-ce66-4f6d-a04c-d04145d92b21" があります。

カテゴリには 3 つのアイテムがあるため、カテゴリのオブジェクト ID もさらに 2 回表示されます。このように: "971ef69e-1605-46f2-8234-b595e38be11a","971ef69e-1605-46f2-8234-b595e38be11a"

その生成された JSON シリアライゼーションは期待どおりです。しかし、そのオブジェクト参照「@id」をそのjsonで非表示にする必要があります。この「@id」は、デフォルトで @JsonIdentityInfo によって作成されます。

したがって、オブジェクト ID「@id」を非表示にするには、@JsonIdentityInfo の構成が必要です。@JsonIgnore を試しましたが失敗しました。

解決策を求めて 2 日間グーグル検索しましたが、失敗しました。誰か解決策や提案を教えてもらえますか?

0 投票する
3 に答える
2845 参照

java - Spring Context でインスタンス化された JsonIdentityInfo リゾルバー

ObjectIdResolver クラスが Spring によってインスタンス化されるように、Spring/Jackson オブジェクト マッパーに ObjectIdResolver を登録するにはどうすればよいですか? ObjectIdResolver クラスで依存性注入を使用したいと考えています。

ObjectIdResolver.java

注文.java

spring-servlet.xml

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

java - Hibernate マッピングでの JsonIdentityInfo の使用

City と Type という 2 つのエンティティがあり、これら 2 つの間に多対多の関係があります。私が必要とするのは:

  1. タイプを含む City の json
  2. 都市を含む Type の json。

JsonIdentityInfo を使用して、マッピングからの無限再帰を停止していますが、JSON から取得したものは実際には役に立ちません。これは私が現在都市のJSONから得ているものです

しかし、私が必要とするのは次のようなものです:

Cities JSON についても同じことが言えます。双方向にする必要があります。

これは私のエンティティのコードです:

街:

タイプ: