問題タブ [jackson]
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.
java - 春の正しいバージョンまたはジャクソンは何ですか?
ジャクソン コンバーター (MappingJacksonHttpMessageConverter) を使用して、スプリング コントローラーから json データを消費および生成しています。ただし、コントローラーを呼び出すと、次の例外がスローされます。
私のコード:
春豆ファイル:
abc.CartType abc.CartResponseType
pom ファイル (スニペットのみ)
spring-web pom ファイルで jackson バージョンが 1.4.2 として言及されていることがわかりますが、私が使用したものと同じで、メソッドが見つからないという例外がスローされています。正しいバージョンを使用していますか?
java - 変数に基づいてJacksonJSONで異なるBeanクラスを使用しますか?
私は次のようなJSONを持っています:
基本的に、同じ変数を持つオブジェクトのリスト。私のコードでは、これらのオブジェクトを含むクラスAのArrayListを作成したいと思います。ただし、「kind」の値に応じて、各オブジェクトをサブクラス1または2にします。
どうすればこれを達成できますか?
ありがとう!
java - cxfからのjson出力を正確に一致させる方法は?
編集:私は混乱していました-ジャージではなくcxfを使用していました。注釈付きオブジェクトを、jacksonのObjectMapperに似たjsonに変換する方法はありますか?
元のメッセージ:
こんにちは。現在、jaxrsを使用してWeb応答をxml/jsonに変換しています。ただし、ここで実行したいのは、ObjectMapper(?)を使用してコード内に同等のjson文字列を生成することです。
たとえば、コントローラーとjaxb注釈付きの戻りオブジェクトがあるとします。
http://myserver /.../foo.jsonを押すと、かなりのjsonが出力されます。
今、私はその正確なjsonを内部で生成できるようにしたいと思います:
ただし、これはまったく機能していないようです。注釈付きの属性と要素のほとんどが欠落しており、jaxrs出力などの場合のように、属性の前に「@」が付いていません。
私は何か簡単なものが欠けていますか?jaxrs自体はどのようにして注釈付きオブジェクトをjson文字列に変換しますか?
ありがとう!ジョー
java - Jackson と Jersey を使用すると JsonTypeInfo がシリアライズされない
ポリモーフィックなクラスを簡単にシリアル化できるように、JsonTypeInfo で JAXB クラスにアノテーションを付けました。ただし、Jersey でシリアライズすると、アノテーションは表示されません。具体的には、ObjectMapper を使用すると表示されますが、リソースからの戻り値の型としては表示されません。これは Jersey => Jackson の相互作用の問題のように思われるため、現在非常に混乱しています。
物事をデバッグするために、jersey-samples の jsonfromjaxb の例を使用して問題を特定しました。以下を Flight クラスに追加して、@class にシリアル化します。
リソースで使用できる次のメソッドがあります。1 つは JAXB オブジェクトを返すだけで、もう 1 つは手動で ObjectMapper を使用します。
/jsonfromjaxb/flights をクエリした結果
/jsonfromjaxb/flights/object_mapper をクエリした結果
ありがとう、身代金
android - アノテーションを使用せずにJacksonJSONプロセッサを使用する
サーバーおよびクライアントアプリケーションに関連する共有クラスを(JAXBを介して)生成するためのxsdファイルを含むパッケージがあります。したがって、これらのクラスにはXMLアノテーションが含まれています。
1つのクライアントはAndroidアプリです。また、JSONを配信するRESTサービス(Jersey / Jacksonと)と通信するため、ここでこれらのクラスをJSON逆シリアル化に使用したいと思います。
私は次のようにAndroidでJackson(バージョン1.7.2)を使用しようとしています:
MAPPERを構成すると、注釈の使用を避ける必要がありますが、それでも
ジャクソンが注釈を解決するのを阻止する秘訣を誰が知っていますか。
ありがとうクラウス
jquery - 注釈付きコントローラーから自動的にフォーマットされたjsonデータを取得する際に問題が発生しました
私が理解していることから、 mvc:annotation-driven タグを使用している場合、関連する jackson jar ファイルがクラスパスに存在する場合、JSON 形式のオブジェクトを返すことができます。これが事実です。
ただし、サーバーから 406 (受け入れられない) 応答が返されます。
注釈付きコントローラーの関連セクションは次のとおりです。
これは、クライアント ページの jquery コードです。
クラスパスに配置しようとしたジャクソン jar は次のとおりです。
jackson-core-asl-1.7.2.jar および jackson-mapper-asl-1.7.2.jar
私も試しました
jackson-all-1.7.2.jar
まだ恐ろしい406を取得しています..
DateResponse オブジェクトを JSON に変換するには、明示的に注釈を付ける必要がありますか? 既存のフィールド名を使用することがデフォルトの動作になると思っていたでしょう。
一番悔しいのはバックエンドの例外が見られないことだと思いますので試行錯誤しています。
編集:ここにhttpヘッダーがあります
そして、dispatcher-servlet.xml ファイルは次のとおりです。
EDIT2: これが catalina.out です
同じ期間の localhost ログは次のとおりです。
java - Jackson JSON プロセッサーの問題
私はこれについて何時間も頭を悩ませてきました:
JscksonはデシリアライズしますB
が、以下を爆撃しC
ます:
B
とC
は両方とも のサブクラスであるA
ため、setter がありgetName
ます。の大文字は意図的なものであることに注意してくださいN
。Name
これが私の JSON の外観です。Deserializing はUnrecognized field nameについてC
不平を言います。それは問題ないからです。Name
B
バージョン 1.7.2
json - 配列リストまたはクラスの取得
次のような配列を提供する外部サービスにアプリを接続しようとしています
または次のようなエラーが発生した場合
これを単一のクラスとして定義する方法、またはオブジェクトがどのストリームであるかを認識する方法はありますか?
更新 1: ループで 100 回実行し、平均実行時間を計算して、いくつかのバージョンをテストしました。すべての異なるバージョンで、jackson を使用しました。
これがパフォーマンスのベースラインです。コードは配列とオブジェクトを区別しないため、ビジネス要件を満たしていません。
写真: 平均 100 回の実行。持続時間: 923ms
パーサーを使用すると、パフォーマンスが約 1 分低下します。50%
写真: 平均 100 回の実行。継続時間: 1585ms
InputStream を String に変換し、objectMapper.readValue ソリューションを保持すると、次のようになります。
写真: 平均 100 回の実行。継続時間: 1191ms
アップデート1終了
java - Jackson : 他のフィールド値に応じたフィールドのシリアル化形式
次の Java クラスがあり、Jackson を使用して JSON にシリアル化したい:
しかし、allDay が true の場合は「yyyy-MM-dd」、allDay が false の場合は「yyyy-MM-dd HH:mm」として日付をフォーマットしたいと考えています。それは可能ですか?
java - ジャクソン+ビルダーパターン?
Jacksonに次のコンストラクターを使用してクラスを逆シリアル化してもらいたいです。
最初の引数の逆シリアル化は簡単です。問題は、アドレスが次のように定義されていることです。
次のように構成されています。new Address.Builder().setCity("foo").setCountry("bar").create();
自分でアドレスを作成するために、ジャクソンからキーと値のペアを取得する方法はありますか?または、JacksonにBuilderクラス自体を使用させる方法はありますか?