問題タブ [aeson]
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.
haskell - 型シグネチャには、ライブラリによってエクスポートされていない型が必要です
だから私は aeson ライブラリを使用していましたが、次の機能があれば非常に便利だと思いました:
タイプを GHCi に尋ねると、次のようになります。
ただし、パーサー自体は実際にはData.Aeson
またはによってエクスポートされませんData.Aeson.Types
。定義した関数の型シグネチャを持たないようにする必要がありますか?
あるいは、私がやろうとしていることを達成するためのより良い方法を誰かが知っているなら、あなたの提案に興味があります.
haskell - aeson で解析されたエンティティ配列の型を yesod-persistent に認識させるにはどうすればよいですか?
オブジェクトの配列を持つ json を受け入れることができる yesod ハンドラーがあります。すべてのオブジェクトをデータベースに挿入したいと思います。
しかし、どういうわけか、私のエンティティタイプを認識していません。(ただし、同じモジュール内の他の POST および GET ハンドラーは問題なく動作します。) かなり近いことはわかりますが、「a0」はどこにも宣言した型ではないため、どうすればよいかわかりません。エラーは次のとおりです。
haskell - Haskell Aeson 入力の JSON フィールドを無視する
私は Haskell レコードを持っています
入力JSONの「トークン」の値を無視したい。たとえば、入力 JSON が
結果のUser
オブジェクトにUser { email = "foo@bar.com", token = "" }
.
以下を定義しました。
JSONの値を無視して、token
フィールドの値を設定するより良い方法はありますか?v .:? "" .!= ""
"token": "abc123"
私は試した
<*> ""
しかし、 は である必要があるため、コンパイルされませんParser Text
。
unit-testing - テスト用に Aeson で JSON を変換する
Yesod REST サービスの統合テストで、呼び出された API が返されます。
ここxxx
で、MongoDB ObjectID (12 バイトの 16 進数でエンコードされた文字列) です。
aesonを使用して、返された JSON が実際にこの形式であることを確認したいと思います。
JSONを正規の形式に変換する方法はありますか?
フィールドの値がuserId
指定された正規表現と一致するか?
assertEquals
次に、応答 JSON (実際) を期待値に一致させるために使用できます。
Scala Lift JSON ライブラリでは、次のようなことができます。
aesonに似たようなものはありますか?
haskell - Haskell: レンズ、lens-aeson、ネストされた JSON で FromJSON インスタンスを再利用する
私は Aeson とレンズ パッケージ (lens-aeson、コア レンズ パッケージから移行) で遊んでおり、それらを連携させるのに苦労しています。
おもちゃの例として、次のタイプがあります。
および FromJSON インスタンス:
ここまでは順調ですね。
ここで、ネストされた JSON データが入ってきて、これだけを抽出したいとします。
残りは気にしません。この「色」の値だけです。さらに悪いことに、JSON は特に一貫性がないとしましょう。
その他の時間
できるだけ簡単に色の値を取得し、理想的には FromJSON インスタンスを使用して色に解析できるようにしたいと考えています。これはおもちゃの例ですが、Color の代わりにデータ型に多数のフィールドなどがある場合があります。
私はレンズ-aesonのものを見始めました、そしてそれは私の希望を上げました。これにより、JSON 構造への非常に簡単なピアリングが可能になります。例:
しかし、 parseJSON 呼び出しでそれを実行して元に戻す方法が見つかりませんJust Yellow
。parseJSON は、適切な型 (おそらく少なくとも内部のもの) を取るという点で近いように見えますが、その後バラバラになります。理想的には、次のいずれかのようなことができます。
私がそれを理解するのに最も近いのは、上記の結果を再エンコードしてからデコードすることです。
これにより、必要な JSON エンコード データが返されます。より複雑なケースでは、そのデータがオブジェクトまたは配列である場合、decode
通常どおりに実行してより複雑な型を取得できますが、decode は不適切な JSON を好みません。配列またはオブジェクト構文にラップされていないもの。さらに、デコードしてからエンコードするのは非常に面倒で、あまりパフォーマンスが良くないように見えます。
私はレンズと Aeson 全体にかなり慣れていません (そして Haskell については、全体としてモナド/アプリケーションのようなものを理解するようになったので、ゆっくりと進歩しています!)。皆さんはどうやってこれを成し遂げますか?
私の一般的な動機は、JSON データの負荷を処理することですが、実際にはその断片のみを気にするため、JSON のさまざまな場所からそれらの断片を取得する必要があるたびにデータ型を宣言することを避けたいということです。代わりに、気になるビットの型を宣言するだけです。
少し異なる動作をする aeson-lens ではなく、lens-aeson-1 と lens-4.4.0.1 を使用していることに注意してください (回答に関連する可能性があります)。
前もって感謝します!ジェームズ
json - AESONを使用してネストされたJSONで配列を読み取るにはどうすればよいですか
Github Webhooks API を使用するアプリを作成しています。フック メッセージで、次の JSON 構造を取得しました: http://organicorange.ro:8000/set
私は次のような型宣言をしています:
「変更された」配列を解析してリストを返すにはどうすればよいですか?