elm:解码包含json数组的json

时间:2016-12-13 15:38:07

标签: elm json-deserialization

所以我需要在json中解码包含json array的{​​{1}}。这是我的模特:

elm

以下是type alias ValidationResult = { parameter : String , errorMessage : String } type alias ErrorResponse = { validationErrors : List ValidationResult }

的示例
json

我尝试创建一个{"ValidationErrors": [{"Parameter": "param1","ErrorMessage": "message 1"},{"Parameter": "param2","ErrorMessage": "error message 2"}]} 解码器,例如:

ValidationResult

但我不知道如何继续前进。

我正在使用decodeValidationResults : Decoder ValidationResult decodeValidationResults = map2 ValidationResult (at [ "Parameter" ] Json.Decode.string) (at [ "ErrorMessage" ] Json.Decode.string) 0.18

1 个答案:

答案 0 :(得分:1)

你快到了!您只需要一个解码ErrorResponse类型的解码器。为此,请创建另一个解码器,该解码器使用您已创建的解码器列表,假设字段名称为"ValidationErrors"

import Json.Decode exposing (..)

decodeErrorResponse : Decoder ErrorResponse
decodeErrorResponse =
    map ErrorResponse
        (field "ValidationErrors" (list decodeValidationResults))

一点建议:当只有一个级别时,您可以使用Json.Decode.field代替Json.Decode.at。您可以重写decodeValidationResults

decodeValidationResults : Decoder ValidationResult
decodeValidationResults =
  map2 ValidationResult
    (field "Parameter" string)
    (field "ErrorMessage" string)