問題タブ [json4s]
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.
scala - Scala for-comprehension と json4s の奇妙な動作
以下のコードは次のようになります。
- 文字列のシーケンスを反復処理する
- それぞれをjsonとして解析し、
- ほとんどの言語で識別子として使用できない名前のフィールドを除外します
- 残りの名前を小文字にする
- 結果を文字列としてシリアライズする
小規模なテストでは期待どおりに動作しますが、ライブ データの 860 万アイテム シーケンスでは、出力シーケンスが入力シーケンスよりも大幅に長くなります。
実際にユニークアイテムの数が増えることを確認したので、アイテムを複製するだけではありません。Scala 内包表記と json4s についての私の理解を考えると、これがどのように可能かわかりません。大規模なライブ データ コレクションは Spark RDD ですが、私のテストでは通常の Scala Seq を使用しましたが、違いはありません。
上記のコードjson
よりも多くの要素をどのように持つことができますか?txt
json - json4s の render の目的
json4s の例とドキュメントでは、イディオムをよく見かけます
と
生成されたコードにコンパクトまたはプリティを直接適用した例を実際に見たことはないと思いますが、ここでJValue
何をしているのかはわかりませんrender
。レンダーにはタイプJValue => JValue
があり、それが実行していることに明らかな違いは見られません
一部のデータでは、空の空のコレクションが返されます。
実際には何をしrender
ますか?
scala - json を解析し、その内容に応じて異なるケース クラスに抽出するにはどうすればよいですか
json4s を使用して、さまざまな種類のイベントを json 形式で解析しようとしています。基本クラスからすべて継承するさまざまなイベントを表すために、いくつかのケース クラスを作成しましたEvent
。
StartSession
これは、イベントを解析するために使用する関数です。
この関数は、次のようなjsonを正しく解析します{"EventType":"StartSession","Platform":"Portal"}
Event
パーサー関数を一般化して、継承するすべてのタイプのイベントを解析し、関数の戻り値に対してパターン マッチングを実行できるようにする方法を探しています。
android - json4s は Android でケース クラス Test("test") を "{}" にシリアル化します
Android Scala アプリでケース クラス グラフを JSON にシリアル化しています (を使用"com.hanhuy.sbt" % "android-sdk-plugin" % "1.3.5"
)。
を使用し"org.json4s" %% "json4s-native" % "3.2.10"
ていますが、次のような単純なケース クラスでも失敗します。
実際にシリアル化するコードは次のようになります。
出力は次のとおりです。
ProGuard の問題が疑われ、ProGuard の設定はbuild.sbt
次のようになっています。
私も試してみましjson4s-jackson
たが、違いはありませんでした。
ProGuard ログは次のようになります。
何か案は?
json - json4sでJStringをIntに変換する方法
最近、Jerkson から json4s に切り替えましたが、これら 2 つのライブラリのデフォルトの逆シリアル化動作がまったく同じではないことがすぐにわかりました。
私たちが抱えている問題の 1 つは、数値フィールドが数値ではなく文字列として表される json 入力を受け取ることがあるということです。
これらは、次のクラスに逆シリアル化する必要があります
これは、json を任意のクラスに逆シリアル化するための一般的な設定です
ただし、json オブジェクトを id の文字列表現で解析しようとすると、例外がスローされ、次のメッセージが表示されます。
offer に使用できる値がない id に使用できる値がない JString(12545) を int に変換する方法がわからない
文字列を整数に解析しようとする整数フィールドのカスタムリーダーを設定する方法を探していましたが、ユースケースをカバーするソリューションをまだ見つけていません。私たちが必要としているのは、レガシー アプリケーションをサポートするための一般的な包括的なソリューションです。
これを達成する方法を知っている人はいますか?
json - json4s を使用して json 配列から情報を解析および抽出する方法
現在、json4s (scala) を使用して json 配列から情報を抽出しようとしています。
データの例は次のとおりです。
私のコードは次のとおりです。
出力は次のようになります。
データが正しく取得されていないようです。私のコードに問題はありますか?
更新: @Kulu Limpa の提案に従って動作します。
scala - scala 2.10 で 22 を超えるフィールドを持つ json からデータを抽出できません
各レコードに n > 22 のキーと値のペアがある json データセットから値を抽出しようとしています。そのために、n 個のメンバー変数を持つケース クラスを実装しました。ただし、scala 2.10.x コンパイラは、「実装の制限: ケース クラスは 22 個を超えるパラメータを持つことはできません」と報告しました。
問題は scala コンパイラの制限にあるようですが、この問題を解決するための迂回路はありますか?
アップデート:
大きなケース クラスを小さなクラスに分解しようとしましたが (ネストされたケース クラスを使用)、その場合、プログラムは json を正しく解析できません。json4s の実装では、そうすることができないと思います。
json - ObjectId が JSON にシリアル化されていません
私はscalatraを使用しており、サーブレットが常にJSONを返すように構成しています(それぞれのガイドで説明されています)。MongoDB と Salat を使用すると、MongoDBObject を自分のケース クラスに読み込むところまで行き着きます。これはうまく機能しているようです。
私のケースクラス:
ケース クラス オブジェクトを印刷すると、次のように出力されます。
ご覧のとおり、objectid は org.bson.types.ObjectId です。JSON への自動シリアル化は、これをブラウザーに送信します。
ObjectID はどこにありますか? 私は何を間違っていますか?