我在 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")] }

这两个结果是相同的,那么为什么根据断言它们不相等呢?

最佳答案

setlong-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/

10-13 00:31