2016-12-13 9 views
1

json arrayを含むjsonをデコードする必要があります。elmです。ここに私のモデルである:elm:json配列を含むjsonをデコードする

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) 

しかし、私はドンさらに進める方法を知っている。

私はあなたがほとんど存在しelm 0.18

答えて

1

を使用しています! ErrorResponseタイプをデコードするデコーダが必要です。これを行うには、フィールド名が"ValidationErrors"であると仮定すると、すでに作成したデコーダのリストを使用する別のデコーダを作成するには、次の

import Json.Decode exposing (..) 

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

アドバイスの1ビット:あなたが使用することができますJson.Decode.fieldの代わりJson.Decode.atそこを単一のレベルにすぎません。私はそれがそのような何かなければならないことを知っていたが、私は(リストdecodeValidationResults)について知っていませんでした

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

:あなたはこのようdecodeValidationResultsを書き換えることができます。ありがとう –

関連する問題