問題タブ [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 - ジャクソン:JSONへのカスタムコレクションのシリアル化
2番目のクラスMyClassの要素のコレクションであるプロパティを使用してクラスMyRootClassをjsonシリアル化しようとしています。
次のコード:
このJSON出力を生成します:
必要なものの代わりに、コレクション内のすべてのオブジェクトが次の名前でシリアル化されます。
ジャクソンを使用してそれを達成する方法はありますか?カスタムシリアライザーを作成することを考えましたが、オブジェクトのコレクションに関連するものは見つかりませんでした。
java - SpringMVCがjsonコンテンツを返さない-エラー406
Ajax Simplification Spring 3.0の記事で指定されているように、JSONでSpringMVCを使用しています。
さまざまなフォーラムで見つかったアドバイスに応じてコードを何度も試行し、バリエーションを加えても、コードは機能しません。
次のエラーが発生し続けます。(406)このリクエストで識別されたリソースは、リクエストの「accept」ヘッダー()に従って受け入れられない特性を持つ応答のみを生成できます。
必要に応じてappconfig.xmlにあります。
app-config.xml
mvc-config.xml
これは私が私のコントローラーのために持っているものです
jspjquery呼び出し
この問題についてのご意見をいただければ幸いです。ありがとうございました
json - Springの@RequestBodyを使用し、後でHttpServletRequest.getInputStream()を読み取る
@RequestBody
Springのアノテーションとを使用して、リクエストのJSONPOSTデータをオブジェクトにマッピングしていますMappingJacksonHttpMessageConverter
。String
ただし、その後、フォームのデータを読み取って、追加の認証を行いたいと思います。しかし、マーシャリングが行われたとき、InputStream
inHttpServletRequest
は空です。メソッドからパラメーターを削除すると@RequestBody
、POSTデータの読み取りはString
期待どおりに機能します。
をあきらめて@RequestBody
バインディングを手動で行うことで妥協する必要がありますか、それともより洗練された解決策がありますか?
java - Jackson: Json 構成値を無視します
次のjsonファイルがあります。
ただし、Java モデルは次のとおりです。
Jackson が解析しているときに、フィールド「externalId」のゲッターまたはセッターがないため、例外が発生します。json フィールドを無視するために使用できるデコレータはありますか?
java - JSON子オブジェクトプロパティをJacksonのJavaオブジェクトフィールドにバインドする
私はJSONオブジェクトを持っています、例えば:
そして、私はそれを次のようなJavaオブジェクトにバインドしたいと思います。
foo.bar
JSONからJavaオブジェクトのbar
フィールドにの値を設定するにはどうすればよいですか?Foo
フィールドに。で注釈を付けようとしました@JsonProperty("foo.bar")
が、そのようには機能しません。
spring-mvc - エンドポイントからJSONを取得しようとしたときに406エラーが発生しました
私はこの性質の他のいくつかの質問を見ましたが、それらは法案に完全には適合しませんでした。
現在、2つの異なるコントローラーからJSONを返そうとしています。私のコントローラーの1つでは問題なく動作しますが、2番目のエンドポイントに到達すると、406エラーが発生し、何が問題なのか理解できません。コントローラのアクションは次のとおりです。
これが私が返そうとしているモデルです:
コントローラコードからわかるように、私のResultsListはCompanyResultオブジェクトで構成されています。
したがって、私のコントローラーは@XmlElementで注釈が付けられた@RequestBody ResultsListを返し、リストに含まれるオブジェクトにも@XmlElementで注釈が付けられます。これは、他のシナリオを機能させるために私がしなければならなかったことです。しかし、これは失敗します。誰か教えてもらえますか?
string - ジャクソンで長い文字列をシリアル化する方法は?
jackson は long x = 1234 を {x:1234} にシリアライズします いくつかの理由で {x:"1234"} が必要です
ジャクソンの注釈はありますか?
ありがとう。
java - Restletは400の不正な要求を返す必要があるときに415のサポートされていないメディアタイプを返しますか?
私はjsonRESTapiを構築するためにjacksonでRestlet2.1を使用しています。
予期されたコンテンツタイプで不正な形式の本文でリクエストを行うと、415の「サポートされていないメディアタイプ」ステータスコードが返されます。正しいエラーコードは400「BadRequest」だと思います。
どうやら、ジャクソンがゴミをデコードしようとして失敗したときに混乱が発生しているようです。
いくつかのコードを使用して、ケースをより明確にしようとします。
curlを使用したサービスの呼び出し
そして、ログに記録されたスタックトレースの断片:
サービスの実際の実装がヒットすることはないため、どこかで文字化けしたコンテンツを415にマップすることが決定されます。
さて、私の質問は:これは正しいですか?「RESTfulWebサービス」という本からの次の引用を正しく読んでいれば、そうではありませんが、訂正の余地があります。
[400 Bad Request]これは、クライアントがPUTまたはPOSTリクエストとともに表現を送信し、表現が正しい形式である場合によく使用されますが、意味がありません。
。
[415サポートされていないメディアタイプ]クライアントが正しいメディアタイプを持っているが間違ったフォーマットのドキュメント(間違った語彙で書かれたXMLドキュメントなど)を送信する場合、より一般的な400(「不正な要求」)がより適切な応答になります。
正しいか間違っているか、私は400を返したいと思います。
ジャクソンが提供する自動マジックシリアル化を放棄せずに動作を変更する方法はありますか?
どんな助けでも大歓迎です、ありがとう!
java - JacksonとGsonの間で日付を変換するには?
Spring 構成の REST サーバーでは、Jackson を使用してオブジェクトを Json に変換します。このオブジェクトには、いくつかの java.util.Date オブジェクトが含まれています。
Gson の fromJson メソッドを使用して Android デバイスでデシリアライズしようとすると、「java.text.ParseException: Unparseable date」が発生します。1970 年以降のミリ秒に対応するタイムスタンプに日付をシリアル化しようとしましたが、同じ例外が発生します。
1291158000000 などのタイムスタンプ形式の日付を java.util.Date オブジェクトに解析するように Gson を構成できますか?
java - JacksonプロバイダーをWinkクライアントに登録するにはどうすればよいですか?
おもちゃのアプリケーションをセットアップしようとしています(いつか実際のアプリケーションになる可能性があります)。ウィンクとジャクソンで問題が発生しています。2つのアプリケーションがあります。1つはjettyでwink-serverを実行し、JSONデータを正常に提供しているようです。1つはjettyでwink-clientを実行し、JSONデータを正常に受信します。問題は、JSONデータを自動的に逆シリアル化してJavaBeanに戻すことにあります。
ウィンククライアントアクションで使用するコードは次のとおりです。
Strutsアクションを実行しようとしたときに受け取るエラーは次のとおりです。
最初のコードスニペットの最後の行を次の行に置き換えると、すべてが正常に機能し、ダンディになります。
データが正常に処理されていることは明らかですが、問題は、JacksonJsonProviderクラスがWinkクライアントに登録されていないという事実にあるようです。プロバイダーをWinkサーバーに登録する方法はたくさんありますが、Winkクライアントは登録していません。
最初のコードスニペットを正しく動作させることは可能ですか?もしそうなら、どのように?
(余談ですが、もう1つの問題は、Userクラスに注釈がないことです。現在は注釈がありません。必要な場合があります...)