問題タブ [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.

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

java - ジャクソン:JSONへのカスタムコレクションのシリアル化

2番目のクラスMyClassの要素のコレクションであるプロパティを使用してクラスMyRootClassをjsonシリアル化しようとしています。

次のコード:

このJSON出力を生成します:

必要なものの代わりに、コレクション内のすべてのオブジェクトが次の名前でシリアル化されます。

ジャクソンを使用してそれを達成する方法はありますか?カスタムシリアライザーを作成することを考えましたが、オブジェクトのコレクションに関連するものは見つかりませんでした。

0 投票する
14 に答える
65042 参照

java - SpringMVCがjsonコンテンツを返さない-エラー406

Ajax Simplification Spring 3.0の記事で指定されているように、JSONでSpringMVCを使用しています。

さまざまなフォーラムで見つかったアドバイスに応じてコードを何度も試行し、バリエーションを加えても、コードは機能しません。

次のエラーが発生し続けます。(406)このリクエストで識別されたリソースは、リクエストの「accept」ヘッダー()に従って受け入れられない特性を持つ応答のみを生成できます。

必要に応じてappconfig.xmlにあります。

app-config.xml

mvc-config.xml

これは私が私のコントローラーのために持っているものです

jspjquery呼び出し

この問題についてのご意見をいただければ幸いです。ありがとうございました

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

json - Springの@RequestBodyを使用し、後でHttpServletRequest.getInputStream()を読み取る

@RequestBodySpringのアノテーションとを使用して、リクエストのJSONPOSTデータをオブジェクトにマッピングしていますMappingJacksonHttpMessageConverterStringただし、その後、フォームのデータを読み取って、追加の認証を行いたいと思います。しかし、マーシャリングが行われたとき、InputStreaminHttpServletRequestは空です。メソッドからパラメーターを削除すると@RequestBody、POSTデータの読み取りはString期待どおりに機能します。

をあきらめて@RequestBodyバインディングを手動で行うことで妥協する必要がありますか、それともより洗練された解決策がありますか?

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

java - Jackson: Json 構成値を無視します

次のjsonファイルがあります。

ただし、Java モデルは次のとおりです。

Jackson が解析しているときに、フィールド「externalId」のゲッターまたはセッターがないため、例外が発生します。json フィールドを無視するために使用できるデコレータはありますか?

0 投票する
4 に答える
16485 参照

java - JSON子オブジェクトプロパティをJacksonのJavaオブジェクトフィールドにバインドする

私はJSONオブジェクトを持っています、例えば:

そして、私はそれを次のようなJavaオブジェクトにバインドしたいと思います。

foo.barJSONからJavaオブジェクトのbarフィールドにの値を設定するにはどうすればよいですか?Foo

フィールドに。で注釈を付けようとしました@JsonProperty("foo.bar")が、そのようには機能しません。

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

spring-mvc - エンドポイントからJSONを取得しようとしたときに406エラーが発生しました

私はこの性質の他のいくつかの質問を見ましたが、それらは法案に完全には適合しませんでした。

現在、2つの異なるコントローラーからJSONを返そうとしています。私のコントローラーの1つでは問題なく動作しますが、2番目のエンドポイントに到達すると、406エラーが発生し、何が問題なのか理解できません。コントローラのアクションは次のとおりです。

これが私が返そうとしているモデルです:

コントローラコードからわかるように、私のResultsListはCompanyResultオブジェクトで構成されています。

したがって、私のコントローラーは@XmlElementで注釈が付けられた@RequestBody ResultsListを返し、リストに含まれるオブジェクトにも@XmlElementで注釈が付けられます。これは、他のシナリオを機能させるために私がしなければならなかったことです。しかし、これは失敗します。誰か教えてもらえますか?

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

string - ジャクソンで長い文字列をシリアル化する方法は?

jackson は long x = 1234 を {x:1234} にシリアライズします いくつかの理由で {x:"1234"} が必要です

ジャクソンの注釈はありますか?

ありがとう。

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

java - Restletは400の不正な要求を返す必要があるときに415のサポートされていないメディアタイプを返しますか?

私はjsonRESTapiを構築するためにjacksonでRestlet2.1を使用しています。

予期されたコンテンツタイプで不正な形式の本文でリクエストを行うと、415の「サポートされていないメディアタイプ」ステータスコードが返されます。正しいエラーコードは400「BadRequest」だと思います。

どうやら、ジャクソンがゴミをデコードしようとして失敗したときに混乱が発生しているようです。

いくつかのコードを使用して、ケースをより明確にしようとします。

curlを使用したサービスの呼び出し

そして、ログに記録されたスタックトレースの断片:

サービスの実際の実装がヒットすることはないため、どこかで文字化けしたコンテンツを415にマップすることが決定されます。

さて、私の質問は:これは正しいですか?「RESTfulWebサービス」という本からの次の引用を正しく読んでいれば、そうではありませんが、訂正の余地があります。

[400 Bad Request]これは、クライアントがPUTまたはPOSTリクエストとともに表現を送信し、表現が正しい形式である場合によく使用されますが、意味がありません。

[415サポートされていないメディアタイプ]クライアントが正しいメディアタイプを持っているが間違ったフォーマットのドキュメント(間違った語彙で書かれたXMLドキュメントなど)を送信する場合、より一般的な400(「不正な要求」)がより適切な応答になります。

正しいか間違っているか、私は400を返したいと思います。

ジャクソンが提供する自動マジックシリアル化を放棄せずに動作を変更する方法はありますか?

どんな助けでも大歓迎です、ありがとう!

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

java - JacksonとGsonの間で日付を変換するには?

Spring 構成の REST サーバーでは、Jackson を使用してオブジェクトを Json に変換します。このオブジェクトには、いくつかの java.util.Date オブジェクトが含まれています。

Gson の fromJson メソッドを使用して Android デバイスでデシリアライズしようとすると、「java.text.ParseException: Unparseable date」が発生します。1970 年以降のミリ秒に対応するタイムスタンプに日付をシリアル化しようとしましたが、同じ例外が発生します。

1291158000000 などのタイムスタンプ形式の日付を java.util.Date オブジェクトに解析するように Gson を構成できますか?

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

java - JacksonプロバイダーをWinkクライアントに登録するにはどうすればよいですか?

おもちゃのアプリケーションをセットアップしようとしています(いつか実際のアプリケーションになる可能性があります)。ウィンクとジャクソンで問題が発生しています。2つのアプリケーションがあります。1つはjettyでwink-serverを実行し、JSONデータを正常に提供しているようです。1つはjettyでwink-clientを実行し、JSONデータを正常に受信します。問題は、JSONデータを自動的に逆シリアル化してJavaBeanに戻すことにあります。

ウィンククライアントアクションで使用するコードは次のとおりです。

Strutsアクションを実行しようとしたときに受け取るエラーは次のとおりです。

最初のコードスニペットの最後の行を次の行に置き換えると、すべてが正常に機能し、ダンディになります。

データが正常に処理されていることは明らかですが、問題は、JacksonJsonProviderクラスがWinkクライアントに登録されていないという事実にあるようです。プロバイダーをWinkサーバーに登録する方法はたくさんありますが、Winkクライアントは登録していません。

最初のコードスニペットを正しく動作させることは可能ですか?もしそうなら、どのように?

(余談ですが、もう1つの問題は、Userクラスに注釈がないことです。現在は注釈がありません。必要な場合があります...)