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

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

java - ジャクソン サブクラスに JsonTypeName アノテーションが必要なのはなぜですか

このリンクで

サブクラスがなくても機能する場合、サブクラス(すべての「インターネット; sujestsなど)が必要な理由を理解しようとしています。@JsonTypeName

0 投票する
0 に答える
701 参照

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 を逆シリアル化する正しい方法は何ですか?

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

java - Jackson / Scala 不変ケース クラス: JSON の他の値に応じてクラスを解析する

次のような JSON があります。

そのようなクラスの構造にロードしたい:

秘訣は、「スイッチ」の値に依存する何らかの関数を使用して、受信した「タイプ」文字列を変換したいということです。最も単純な例は次のようなものです

@JsonCreatorただし、構文解析中 (つまり、コンストラクターまたは静的メソッド内)で JSON ツリーの一部にアクセスする方法が見つからないようです。

私がこれまでに持ってきた唯一のものは、基本的に次のようなグローバル変数です:

それは機能しますが、明らかにかなり醜いです。たとえば、異なるスイッチ値を持つ2つのファイルを並行して解析することはできません。より良い解決策はありますか? たとえば、ObjectMapper ごとまたは解析ごとの何らかのコンテキストにアクセスして、この設定を保存できるのではないでしょうか?

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

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 クライアントに返すなど)。

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

json - Jackson JSON デシリアライゼーションを使用して、JVM の型の安全性を破っただけですか?

これは私が得たものです:

同時に、これはビルドさえしません:

ここには明らかに何か問題があります。プロジェクトで使用しているバージョン:

scalaVersion:= "2.11.6"

libraryDependencies += "com.fasterxml.jackson.module" % "jackson-module-scala_2.11" % "2.7.3"

0 投票する
0 に答える
126 参照

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) ...

ケース クラスに注釈がありませんか?

0 投票する
0 に答える
94 参照

scala - JSON を Map[String, Option[String]] にデシリアライズすると、オプション タイプの情報が失われます

版画

Map[String, Option[String]] に逆シリアル化する最良の方法は何ですか?

0 投票する
0 に答える
416 参照

json - Jackson を使用して Int から Tuple へのマップを逆シリアル化する

私は次のようなクラスを持っています

Jackson を使用して、オブジェクトをシリアル化してデータベースに保存し、それらを読み戻しています。ただし、逆シリアル化すると、マップはMap[String, List(Int, Int)].

を使用してキーを正しく逆シリアル化できました @JsonDeserialize(keyAs: classOf[Integer]) が、値を正しく逆シリアル化できません。