問題タブ [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 - 特定の順序でマップを YAML にシリアル化する
yaml
ライブラリを使用して、型Map String t
(またはいくつかの型 t) の値をシリアル化します。ファイルは人間が判読できるようにする必要があるため、結果の出力の順序はかなりランダムであり、最適ではありません。
マップのシリアル化順序を制御する方法はありますか? または、おそらく問題の核心に近い aeson Object
? そうでない場合、適切な回避策は何ですか?
json - Aeson:「文字列を期待しているときに、代わりにオブジェクトに遭遇しました」
私はHaskellにかなり慣れていないので、単純なものが欠けていることを意味していました. 現在、標準入力から JSON を読み込んで、概念実証として AST を取得しようとしています。
私はこのJSONフラグメントを持っています(JSONLintは大丈夫だと言っています):
その入力でプログラムすると、次のようになります。
空の配列であるファイルをテストすると、「代わりに配列に遭遇しました」と表示されます。
したがって、ここである種の変換ステップが欠落しているか、標準入力から誤って読み取っていると推測しています。どう思いますか?
haskell - TemplateHaskell を使用して生成されたインスタンスの無視/オーバーライド
私は、ADTをJsonとしてエンコードして、クライアント/サーバーの一部にAesonを使用しています。私は必要なインスタンスをData.Aeson.TH
生成するために使用していますが、Map タイプ用に生成されたインスタンスは本当に醜く、扱いがひどいものです。toJSON
それらをリストとして扱うだけの、独自のより単純なエンコーディングを定義しました。
当然、コードでこれを使用すると、Duplicate instance declarations
エラーが発生します。
これを解決する方法はありますか?Template Haskell に Map の ToJson インスタンスを生成しないように指示するか、GHC にそのインスタンスを無視して私が提供したインスタンスを使用するように指示する必要があります。これらのいずれかを実行できますか?
これは「重複インスタンス」の問題ではないことに注意してください。あるインスタンスを別のインスタンスと混ぜずに完全に捨てたいです。
json - Aeson を使用して Haskell でネストされた JSON を解析する
RESTful API から JSON を解析しようとしています。返される JSON は高度にネストされており、特定のフィールドが含まれる場合と含まれない場合があります。返されるデータの例を次に示します。
ご覧のとおり、JSON スキーマは、、およびresultSet
を含む で始まります。には、場所のリストと到着のリストが含まれており、UTC 時間のみです。次に、 anは a を含むことができ、a は a を含むことができます。多くのオプション フィールド。location
arrival
queryTime
location
arrival
queryTime
arrival
blockPosition
trip
これらすべてを保持するために、一連の新しいデータ型を作成しました。データ型は同様にネストされます。データ型ごとに、(Aeson ライブラリからの) FromJSON のインスタンスがあります。
さて、問題: データの取得は簡単です。私は生のJSONを表示することができます
しかし、ResultSet データを取得しようとすると、 で失敗しNothing
ます。
ただし、ネストされたデータを削除して、単純にqueryString
フィールドを取得しようとすると (FromJSON のデータ型とインスタンスからフィールドを削除することにより)、成功して queryString フィールドが返されます。
私は何を間違っていますか?これは Haskell で JSON を解析する最も簡単な方法ですか? 全くの素人(学生)ですので、お手柔らかにお願いします。
json - Bitly レスポンス JSON を Aeson でどのように解析しますか?
Aeson を使用して Bitly 応答を解析しようとして頭を悩ませてきました。どの Haskell 型を定義する必要があるか、および Aeson を使用して以下をそれらの型に解析する方法について、誰かが私にヒントを与えることができますか?:
これが私がこれまでに試したことです:
入力時(読みやすくするために手で編集):
私は戻ってきます(手編集も):
コードで、 を探します-- LOST RIGHT HERE
。の配列を解析する方法がわかりません"expand"
。
進歩する方法を見るのは素晴らしいことです。そして、おそらく私は間違った道を進んでおり、誰かが私を正すことができます (たとえば、これまでに定義したデータ型が間違っている可能性があります)。
json - aesonを使用して「ランダムな」整数キーでネストされたJSONを解析する
カスタムタイプaeson
のjsonファイルを生成および解析するためにライブラリを使用しています。Graph
ここに型定義があります。
実際、私はすべての頂点が 2D 空間に位置するオイラーおよび半オイラー グラフを使用しています。一言で言えば、Graph は Data.Graph を使用していますが、これは私の問題とは関係ありません。すべてのグラフには、他の多くのグラフからすばやく識別するための独自の ID があります。
これは、私のグラフに関する情報を含むjsonファイルの例です:
だから、ここにtoJSON
関数の私の実装があります:
しかし、実際にはjsonファイルからの解析に問題があります。主な問題は、特定のグラフがいくつの頂点にあるかわからないため、ハードコーディングできないことです。parseJSON
関数を書く最初の試みは次のとおりです。
1
実際、プログラムがまだ次のすべてを解析している間に、頂点からカウントを開始して取得できると思いましたi
。しかし、これは良い選択ではありませvertex id
ん。そのようなデータを解析することさえ可能ですか? とにかく、私はこの問題の最も単純なケースでも立ち往生しました(から開始して を使用してインクリメントする場合)。1
vertex id
1
vertex ids
1
(+1)
大丈夫。これは、最大頂点 ID と最小頂点 ID を取得する方法です。
すべての署名が一般化されているわけではありませんが、これは単なる例です。
この単純な問題のケースを解決するために、明日もう一度試してみます。とにかく、主な質問にはまだ答えが必要です:)
haskell - Aeson 動的オブジェクトの解析
厳密な構造を持たない json API 応答を解析する必要があります。
parseResponse
後で使用するために解析する (またはそのためのパーサーを選択する) 能力を残す書き込みをどのように行うことができますか?
私の最後の試みは以下です。Aesonのように応答タイプを選択できないため、私はそれが好きではありませんdecode
.