1

任意の json をデコードする方法はありますか (例: コンパイル時にキーがわからない)?

たとえば、次の json を解析する必要があります。

{ 
    "Foo": [
        "Value 1",
        "Value 2"
    ],
    "Bar": [
        "Bar Value 1"
    ],
    "Baz": []
}

キーの名前と数はコンパイル時には不明であり、GET 要求ごとに変更される可能性があります。目標は基本的にこれをMap String (Array String)型にデコードすることです

purescript-argonaut を使用してこれを行う方法はありますか?

4

2 に答える 2

0

Json最初に文字列をviaに解析し、次にArgonaut が提供するさまざまなコンビネータjsonParserを使用して結果のデータ構造を調べることで、完全に独自のものを作成できます。

しかし、私が思うに、最も迅速で簡単な方法は、Foreign.Object (Array String)最初にそれを解析してから、次のように必要なものに変換することですMap String (Array String)

import Data.Argonaut (decodeJson, jsonParser)
import Data.Either (Either)
import Data.Map as Map
import Foreign.Object as F

decodeAsMap :: String -> Either _ (Map.Map String (Array String))
decodeAsMap str = do
    json <- jsonParser str
    obj <- decodeJson json
    pure $ Map.fromFoldable $ (F.toUnfoldable obj :: Array _)
于 2019-06-11T20:58:47.617 に答える