問題タブ [mongo-jackson-mapper]
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.
mongodb - mongo-jackson-mapperを使用してオブジェクトが存在しない場合、オブジェクトをコレクションに挿入する方法は?
この単純な操作の API が見つかりません。私がする必要があるのは、まだ存在しない場合は新しいドキュメントを挿入することです。そのため、「upsert」を使用しようとしています。
挿入する必要があるオブジェクトは「ユーザー」ですが、update() シグネチャは DBQuery インスタンスのみを受け入れます。
ありがとう、マイケル
java - Jackson を使用して 1 つのクラスを 2 つの異なる方法でシリアル化する
私たちのプロジェクトの 1 つで、MongoDB インスタンスと通信する Java Web アプリケーションを使用しています。データベースではDBRefs
、いくつかのオブジェクトの関係を追跡するために使用します。jackson (mongodb-jackson-mapper を使用) を使用して、POJO オブジェクトを (デ) シリアライズします。
ただし、同じ POJO を使用して外部に (デ) シリアライズし、そこでフロント エンドが JSON の表示を処理します。
ここで、オブジェクト全体ではなくデータベースにDBRef
書き込みたいのは明らかですが、(UI が完全なオブジェクトを表示できるように)から参照されたオブジェクトを含む外部世界のシリアライゼーションの方法が必要です。DBRef
現在、テストされていない静的なネストされたクラス コードをいくつか書きました。
理想的には、これに注釈を付けて、おそらくいくつかの構成オブジェクトに応じて、 getFoo() 結果の有無にかかわらずシリアル化 (逆) できるようにしたいと考えています。これは可能ですか?これを行うためのより良い方法はありますか?
maven - RESTEasy メソッドから mongo-jackson マッパーを呼び出す際のエラー
これを数日間続けています。Jetty (古いバージョン) にデプロイされる maven で構築された Java サーブレットがあります。これは、RESTEasy と Jackson で構築された Jetty 上の RESTful Web サービスであり、MongoDB に接続する Jackson Mongo Mapper です。
maven/jetty から (mvn jetty:run を使用して) アプリケーションを正常に実行でき、Jackson Mongo Mapper/Jackson ビットを使用しないクエリに対して期待どおりに JSON を返します。ただし、ジャクソンとマッパーをトリガーするリクエストを送信すると、最初に次のエラーが発生します。
2 回目 (およびそれ以降のすべての要求) を送信すると、次のエラーが表示されます。
質問の最後に web.xml と pom.xml を含めますが、私が知る限り、すべての依存関係が正しく設定されています。それが依存関係でない場合、Bean (BillItem.class) が渡される方法に問題がある可能性があることがわかりました。私はJavaに比較的慣れていないので、これは実装しようとしている特定のスタックに関連するものではなく、愚かな間違いである可能性があります...何が起こっているのかについてのアイデアはありますか?
これが私のweb.xmlです:
ここに私のpom.xmlがあります:
そして、次の最後の行は、エラーをスローしている問題のある呼び出しです。
json - Jackson JSON MongoDB ObjectId の逆シリアル化
わかりました。最初に、Web サービスから返される JSON を示します。Android ContentProvider の ResponseHandler で非同期クエリを実行した後、それを pojos に逆シリアル化しようとしています。
最初は、Android アプリと同じように Web サービスに Jackson アノテーション付きの Bean を使用しているため、この問題に戸惑いましたがowners
、サンプルの JSON でオブジェクトが送信されていないことに気付きました。 Web サービスに追加します (Web サービスの POJO をスキップし、DAO からのアトミック更新によって mongoDB のドキュメントに追加されます)。
じゃあ良いよ。これまで、Jackson はowners
オブジェクトを処理する必要がありませんでした。
JsonMappingException
:参照チェーン [所有者クラスを含むジャクソン Bean へのパス] を介して [見つけられる文字位置] で、トークンjava.lang.String
外の インスタンスをデシリアライズできませんSTART_OBJECT
"userID"
"paidID"
私のJackson Beanにはラッパーがあり、これが「exampleList」のすべてです。
そして、実際のExample
クラス:
そして最後に、これがすべて失敗している ResponseHandler のコード (2 行目で JsonMappingException が生成されます):
$oid
問題は、JacksonがまだmongoDB ObjectIdsであるそれらをマップする方法を知らないということだと感じています。MongoJacksonMapper ライブラリは、@ObjectId
アノテーションと、そのライブラリを使用するように ObjectMapper を構成する方法を提供することで、これを支援するはずですが、まだ機能していません。何らかの理由で、ObjectId ではなく文字列として userID または payedID を検索しています。何か案は?
java - ジャクソン-オブジェクトのリストをルートオブジェクトでラップする
My Controllerは、MyObjオブジェクトのリストを返します(@ResponseBodyを使用)
返されるJSONは次のようになります。
このJSONをラップして、次のようなものが返されるようにします。
私が読んだものから、SerializationConfig.Feature.WRAP_ROOT_VALUEを有効にするか、(?)コントローラーの上で@JsonRootName( "data")を使用する必要があります。
@XmlRootElementも試してみましたが、何も機能していないようです。オブジェクトのリストをルート名でラップする正しい方法は何ですか?
java - Jongo で集計結果を非整列化する
MongoDB 集約フレームワークを使用してドキュメントを照会しています。結果は次のとおりです。
上記の結果からわかるように、クエリは mongoDB シェルで機能しますが、Jongo で結果を取得するときに問題があります。
AggregationOutput
主な問題は、Jongo が?の使用を許可していないことのようです。彼は代わりに望んでAggregation
います...しかし、それを使用する方法に関する利用可能な例が見つかりません
編集:
Jongo を集計で動作させることができないことに少し不満を感じています。MongoDB Java ドライバーで指定されているようにクエリを作成する必要がDBObjects
ありましたが、コードは非常に見苦しく見えます..
EDIT2: 情報を完成させるために、これはJongoで使用していた元の集計であり、ResultObjectにアンマーシャリングできませんでした
}
java - Jackson を使用した Java Mongo DBObject との間の効率的な POJO マッピング
MongoDB Java Driver を使用して DBObject を POJOに変換するのと似ていますが、マッピングに Jackson を使用することに特に関心があるという点で、私の質問は異なります。
Mongo DBObject インスタンスに変換したいオブジェクトがあります。Jackson JSON フレームワークを使用して仕事をしたいと考えています。
これを行う 1 つの方法は次のとおりです。
ただし、https://github.com/FasterXML/jackson-docs/wiki/Presentation:-Jackson-Performanceによると、これは最悪の方法です。だから、私は代替手段を探しています。DBObject
理想的には、JSON 生成パイプラインにフックして、その場でインスタンスを生成できるようにしたいと考えています。BasicDBObject
私の場合、ターゲットは Map インターフェイスを実装するインスタンスであるため、これが可能です。したがって、パイプラインに簡単に収まるはずです。
これで、関数を使用してオブジェクトを Map に変換し、その型のマップ コンストラクターを使用してマップObjectMapper.convertValue
をインスタンスに再帰的に変換できることがわかりました。しかし、中間マップを削除して直接作成できるかどうか知りたいです。BasicDBObject
BasicDBObject
BasicDBObject
aBasicDBObject
は本質的にマップであるため、逆の変換、つまりスカラーDBObject
から POJO への変換は簡単であり、非常に効率的であることに注意してください。
最後に、私の POJO には JSON アノテーションがありません。このままにしておきたいと思います。
mongo-jackson-mapper - このクエリは有効なモンゴ ジャクソン マッパー クエリですか?
データベースから電子メールまたはユーザー名でユーザーを取得しようとしています。ユーザーが一意のエイリアスまたは電子メール アドレスでログインできる機能を想像してください。次のように動作すると思いましたが、動作しません。
私が欠けているものはありますか?
mongodb - mongodb/jackson ドライバー ユーザー ID のリストで一連のレコードを検索しますか?
繰り返しになりますが、mongodb と jackson クライアントでは初歩的に聞こえますが、うまくいきません。したがって、ユーザーIDのリストがあり、それらのIDに一致するユーザーを見つけようとしていますが、うまくいかないようです。次のすべてのクエリを試しましたが、データは返されません。どんな助けでも大歓迎です:
出力:
モンゴッドデータ:
java - mongojack: サブクラスで認識されないフィールド
mongojackを使用して、mongoDB の POJO をマップします。
単一の POJO で問題なく動作します。しかし、これのサブクラスを作成すると、挿入は失敗します:
これらはクラスです:
そして、これは例外が発生するコードです: