我在 elm 中有一个测试,它试图解码一个简单的 json 结构,它有一个 id 和一个 header 映射。当我给出 0 或 1 个标题时,测试通过但不止于此,测试失败并显示以下内容:
Test Suite: Decode an Email: FAILED
a simple email: FAILED. Expected: Ok { id = "1234", headers = Dict.fromList [("key1","value1"),("key2","value2")] }; got: Ok { id = "1234", headers = Dict.fromList [("key1","value1"),("key2","value2")] }
这两个结果是相同的,那么为什么根据断言它们不相等呢?
最佳答案
有 set 的 long-standing 问题与 range 的数据结构和 Json.Decode
一起报告。
以下是一段代码,通常可以解决这个问题:
decoder : Json.Decode.Decoder (BaseValue String)
decoder =
Json.Decode.map (\e -> Entry e) <|
object4 (\t d i c -> {id=i, headers=h})
("text" := Json.Decode.string)
("headers" := Json.Decode.dict (lazy \_ -> decoder)))
lazy : (() -> Decoder a) -> Decoder a
lazy thunk =
Json.Decode.customDecoder value
(\js -> Json.Decode.decodeValue (thunk ()) js)
关于elm - 在榆树中解码字典,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36558218/