問題タブ [jackson-module-scala]
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 ドキュメントの DateField を java.util.Date に逆シリアル化する
新しいプロジェクトの 1 つで mongo-scala の組み合わせを使用していますが、日付フィールドを使用して mongo ドキュメントを逆シリアル化する必要があります
モンゴ文書の例
私はコレクションを照会するためにmongo-scala-driverを使用しており、document.toJson()
json文字列を次のように与えています
このjson文字列をscalaケースクラスに逆シリアル化する必要があります
json4s-mongoを使用して、json を解析した後に scala オブジェクトを抽出しました
返されたエラーは
さらに調べてみると、json4s-mongo は $date nameField を処理せず、代わりに $dt namefield を処理していることに気付きました。
上記のアプローチは、 ObjectId および String データ型に対して完全に機能しますが、 DateField に対してのみエラーが発生します。
DateField を逆シリアル化する正しい方法は何ですか?
java - Jackson / Scala 不変ケース クラス: JSON の他の値に応じてクラスを解析する
次のような JSON があります。
そのようなクラスの構造にロードしたい:
秘訣は、「スイッチ」の値に依存する何らかの関数を使用して、受信した「タイプ」文字列を変換したいということです。最も単純な例は次のようなものです
@JsonCreator
ただし、構文解析中 (つまり、コンストラクターまたは静的メソッド内)で JSON ツリーの一部にアクセスする方法が見つからないようです。
私がこれまでに持ってきた唯一のものは、基本的に次のようなグローバル変数です:
それは機能しますが、明らかにかなり醜いです。たとえば、異なるスイッチ値を持つ2つのファイルを並行して解析することはできません。より良い解決策はありますか? たとえば、ObjectMapper ごとまたは解析ごとの何らかのコンテキストにアクセスして、この設定を保存できるのではないでしょうか?
jackson - スプレー拒否処理はクレイジーですか...それとも私ですか?
validationRejectionHandler
これが私のSprayプロジェクトの成長を続けるものです:
さまざまな種類のエラーを解読するための正規表現を備えたこの複雑なコードが、API クライアントに次のような醜いメッセージを吐き出さないように、Spray で拒否を処理する方法であるというのは、私にはおかしいように思えます。
{ "メッセージ": "必要なクリエーター プロパティ '値' (インデックス 2) がありません\n [ソース: {\n \"ソース\": \"k\",\n \"値\": [\n { \n \"dt\": \"2015-10-15T16:27:42.014Z\",\n \"id\":\"0022A3000004E6E1\",\n \n \"属性\":\"a \",\n \"_id\": \"45809haoua\",\n \"__id\": \"a2p49t7ya4wop9h\",\n \"___id\": \"q2ph84yhtq4pthqg\"\n }]\n行: 12、列: 9] (参照チェーン経由: io.keenhome.device.models.DatumList[\"values\"]->com.fasterxml.jackson.module.scala.deser.BuilderWrapper[0]) " }
変更される可能性のある文字列に対して正規表現を実行せずに、これらのエラー メッセージを処理するにはどうすればよいですか (たとえば、ガベージ以外を API クライアントに返すなど)。
json - Jackson JSON デシリアライゼーションを使用して、JVM の型の安全性を破っただけですか?
これは私が得たものです:
同時に、これはビルドさえしません:
ここには明らかに何か問題があります。プロジェクトで使用しているバージョン:
scalaVersion:= "2.11.6"
libraryDependencies += "com.fasterxml.jackson.module" % "jackson-module-scala_2.11" % "2.7.3"
scala - ジャクソンscala xmlはデシリアライズできません
次のコードがあります
notificationDetails
次のjsonのフィールドを通知タイプのリストに逆シリアル化しようとしています。
次のエラーが表示されます
Caused by: org.codehaus.jackson.map.JsonMappingException: Can not construct instance of Notification, problem: abstract types can only be instantiated with additional type information
at [Source: org.eclipse.jetty.server.HttpInput@4afa6dff; line: 1, column: 281] (through reference chain: Monitor["monitorRules"]->MonitorRules["notificationDetails"])
at org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163)
at org.codehaus.jackson.map.deser.StdDeserializationContext.instantiationException(StdDeserializationContext.java:233)
...
ケース クラスに注釈がありませんか?
scala - JSON を Map[String, Option[String]] にデシリアライズすると、オプション タイプの情報が失われます
版画
Map[String, Option[String]] に逆シリアル化する最良の方法は何ですか?
json - Jackson を使用して Int から Tuple へのマップを逆シリアル化する
私は次のようなクラスを持っています
Jackson を使用して、オブジェクトをシリアル化してデータベースに保存し、それらを読み戻しています。ただし、逆シリアル化すると、マップはMap[String, List(Int, Int)]
.
を使用してキーを正しく逆シリアル化できました
@JsonDeserialize(keyAs: classOf[Integer])
が、値を正しく逆シリアル化できません。