2017-09-17 2 views
1

Json.Decode.Pipeline과 구문 분석 할 중첩 목록이있는 유형 별칭이 있습니다.목록의 Json.Decode.Pipeline (elm 0.18)

import Json.Decode as Decode exposing (..) 
import Json.Encode as Encode exposing (..) 
import Json.Decode.Pipeline as Pipeline exposing (decode, required) 

type alias Student = 
    { name : String 
    , age : Int 
    } 

type alias CollegeClass = 
    { courseId : Int 
    , title : String 
    , teacher : String 
    , students : List Student 
    } 

collegeClassDecoder : Decoder CollegeClass 
collegeClassDecoder = 
    decode CollegeClass 
     |> Pipeline.required "courseId" Decode.int 
     |> Pipeline.required "title" Decode.string 
     |> Pipeline.required "teacher" Decode.string 
     |> -- what goes here? 

어떻게 작동합니까?

답변

1

디코더를 Decode.list으로 전달해야합니다. 귀하의 경우 Student 유형의 모양을 기반으로하는 맞춤식 도구가 될 것입니다. 다음 해야 일 같은

이 테스트되지 않았습니다

,하지만 뭔가 :

studentDecoder = 
    decode Student 
     |> required "name" Decode.string 
     |> required "age" Decode.int 

collegeClassDecoder : Decoder CollegeClass 
collegeClassDecoder = 
    decode CollegeClass 
     |> Pipeline.required "courseId" Decode.int 
     |> Pipeline.required "title" Decode.string 
     |> Pipeline.required "teacher" Decode.string 
     |> Pipeline.required "students" (Decode.list studentDecoder) 

가 유익해야 사용자 정의 플래그 디코더 작성에 this 게시물을 참조하십시오.