問題タブ [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.
json - Aesonによるエラーチェック
このコードは、再帰的な JSON 構造を、私が作成した haskell オブジェクトに解析します。Aeson ライブラリを使用しています。私が直面している問題は、再帰呼び出しでも簡単にエラー チェックを実行できるようにしたいということです。現在、エラーが発生するたびにダミー値 (ayyLmao) を使用しています。しかし、私は Parser モナドから取得したエラー チェックを活用したいと考えています。どうすればこれを行うことができ、プロセス内のコードをクリーンアップできますか? 必要に応じて、サンプル JSON を投稿することもできます。
編集: "ayyLmao" (したがって、愚かな名前) を取り除き、代わりにエラー チェック用の Parser モナドに 'mzero' を使用したいことを指摘したいと思います。
編集:以下の回答のコードは正しいですが、変更したソリューションを追加したいと思います。与えられた解決策では、"null" はこれ以上応答がないことを示していると想定していますが、何らかの理由で API 設計者はそれを空の文字列で表す必要があると判断しました。
haskell - Aeson マッチ二分木
次のような構造を解析しようとして苦労しています
二分木に
しかし、タイプを正しく取得することさえできないようです。この問題の簡単な解決策はありますか?
各 JSON 配列には正確に 2 つの要素が含まれていると想定しているため、結果は次のようになります。
編集:私が試したこと:
インポート用の新しいデータ型を追加してみました
json - Data.Aeson が自分のレコードの 1 つのフィールドのみを処理する方法をオーバーライドする
私は大学のコース用のREST APIを作成しています:
deleted
シリアル化された JSON 構造ではオプションにできるようにしたいのですが、アプリケーションでは許可したくありません。解析時に指定されていない場合に設定deleted
したい。False
の手動インスタンスを作成することもできますがFromJSON
、すべてのフィールドに対してそれを書き出す必要はありません。削除の処理方法を宣言し、自動インスタンスに他のすべてを処理させたいと思います。
どうすればいいですか?
json - 動的な JSON フィールドを使用して型をモデル化する Haskell の方法は?
私は Haskell を初めて使用し、命令型プログラミングのバックグラウンドを持っています。「Haskell の方法」でオブジェクトを JSON にシリアル化できるようにしたいのですが、その方法はまだよくわかりません。
JSON について少し説明しているRealWorldHaskell の第 5 章を読み、Aeson をいじりました。また、次のような Haskell で記述されたいくつかの JSON API ライブラリも調べました。
これにより、オブジェクトから非常に基本的な JSON 文字列を作成できるようになりました (このブログ投稿のおかげでもあります)。
それは印刷されます:
ここでの目標は、User
任意のフィールドを持つことができるインスタンスに別のフィールドを追加することです。Facebook Graph API には、data
必要なプロパティを持つ JSON オブジェクトである というフィールドがあります。たとえば、Facebook の API に対して次のようなリクエストを行うことができます (疑似コード、Facebook API に正確には詳しくありません)。
最初の 2 つのフィールドname
とobject
は typeString
ですが、data
フィールドは任意のプロパティのマップです。
User
問題は、上記のモデルでそれを達成するための「Haskell の方法」は何ですか?
単純なケースを行う方法を理解できます:
しかし、それは私が探しているものではありません。つまり、User
JSON にシリアライズされると、型は常に次のようになります。
User
問題は、その型を 1 回定義するだけで、そのプロパティに任意のフィールドをアタッチできるようにするにはどうすればよいかということですdata
。その一方で、静的型付け (またはそれに近いもので、詳細にあまり精通していないもの) の恩恵を受けます。タイプのまだ)。
haskell - Haskellでパラメータ化された型をJSONにシリアライズする方法は?
単純な型があり、それを Aeson で JSON にシリアライズしたいとします。基本的なセットアップは次のとおりです。
bird
ここで、 andstate
フィールドに加えて、ユーザーが追加/カスタム メタデータを渡すことができるようにしたいとします。野鳥観察の場合、おそらくこれは気温、鳥の密度、潮の位置などです。事前にはわかりませんが、何でもかまいません。
Haskell の Twitter APIのような例を見ると、次のように構成する必要があるように思われます。
これまでの私の理解では、これはパラメータ化された型です。目標は、そのオブジェクトから JSON を作成する簡単な方法を作成することです。したがって、次のような関数を定義します。
しかし、ここからどこへ行くべきかはまだわかりません。その関数を次のように呼び出すと:
エラーがスローされます(私はHaskellを初めて使用するので、これらすべてを解釈する方法の基本をまだ学んでいます)
ここで何が起こっていますか / どうやってこれを機能させますか?
最終的な目標は、meta
フィールドに文字列を渡すのではなく、次のような型指定されたオブジェクト (ただし、任意のオブジェクトを指定できます) を渡すことです。
Haskellでこれをどのように達成しますか?