Elm:如何编码嵌套对象

问题描述 投票:0回答:1

模型

type alias Model {
      name : String
    , poi_coordinates : Coordinates
}

type alias Coordinates = 
    {
        coord_type : String
    ,   coordinates : List Float
    }


poiFormEncoder : Model -> Encode.Value
poiFormEncoder model =
    Encode.object
        [ 
          ( "name", Encode.string model.name )
        , ( "type", Encode.string model.poi_coordinates.coord_type)
        , ( "poi_coordinates", Encode.array Encode.float (Array.fromList model.poi_coordinates.coordinates) )
        ]

我能问如何编码此数据类型吗?我不知道,我做的编码器也没有给出坐标填充。任何帮助都非常感谢。 Json文件格式在下面

[
   {
        "name": "Mcd",
        "coordinates": {
            "type": "Point",
            "coordinates": [
                101.856603,
                2.924
            ]
        } 
    },
         .
         .
         .
]
encode elm encoder
1个回答
0
投票

您可以将呼叫嵌套到Json.Encode.object。每次在输出中需要一个新对象时,都需要另一个对象,例如:

poiFormEncoder : Model -> Encode.Value
poiFormEncoder model =
    Encode.object
        [ ( "name", Encode.string model.name )
        , ( "coordinates"
          , Encode.object
                [ ( "type", Encode.string model.poi_coordinates.coord_type )
                , ( "coordinates", Encode.list Encode.float model.poi_coordinates.coordinates )
                ]
          )
        ]

这应该很有意义:它是(key, value)对的列表,并且值应该是另一个对象。

© www.soinside.com 2019 - 2024. All rights reserved.