Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于Swift4的JSON解码器_Json_Struct_Decode_Swift4_Codable - Fatal编程技术网

用于Swift4的JSON解码器

用于Swift4的JSON解码器,json,struct,decode,swift4,codable,Json,Struct,Decode,Swift4,Codable,使用Swift4、iOS11.1、Xcode9.1、 尝试在Swift4的可编码结构中匹配JSON文件时,我遇到以下问题: 这是我的密码: struct Station: Codable { let htmlAttributions: [String] let nextPageToken: String let status: String struct Result: Codable { let id: String en

使用Swift4、iOS11.1、Xcode9.1、

尝试在Swift4的可编码结构中匹配JSON文件时,我遇到以下问题:

这是我的密码:

struct Station: Codable {

    let htmlAttributions: [String]
    let nextPageToken: String
    let status: String

    struct Result: Codable {
        let id: String

        enum CodingKeys : String, CodingKey {
            case id
        }
    }

    enum CodingKeys : String, CodingKey {
        case htmlAttributions = "html_attributions"
        case nextPageToken = "next_page_token"
        case status
        case result
    }
}
据我所知,为了允许JSON文件中出现下划线键,我必须放置枚举。但在添加枚举后,会出现错误消息。我的枚举有什么问题?它是如何正确放置的

你能让我看看下面的JSON文件吗?如何在结构中匹配它?感谢您的帮助

以下是JSON文件:

{
   "html_attributions" : [],
   "next_page_token" : "F3ddaOzOcyo94AA2skDm",
   "results" : [
      {
         "formatted_address" : "Strasse 1, 6003 Luzern, Switzerland",
         "geometry" : {
            "location" : {
               "lat" : 47.04951260000001,
               "lng" : 8.310404999999999
            },
            "viewport" : {
               "northeast" : {
                  "lat" : 47.0508615802915,
                  "lng" : 8.311753980291503
               },
               "southwest" : {
                  "lat" : 47.0481636197085,
                  "lng" : 8.309056019708498
               }
            }
         },
         "icon" : "https://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png",
         "id" : "a3d600a6e78105b6ce2b5f5a3fac98ca1910a09b",
         "name" : "Luzern",
         "photos" : [
            {
               "height" : 4000,
               "html_attributions" : [
                  "\u003ca href=\"https://maps.google.com/maps/contrib/113951418385089253589/photos\"\u003eAlex Marcu\u003c/a\u003e"
               ],
               "photo_reference" : "CmRaAAAAYHK1VHDFlkbzXuMnF2MLEdew-36lgHC2lS1Cxg_DELgP-ckZH7G6aa-81LGDpR5rPZY1XMw64mytsjXIrdB5n3QQmXjGgelwZEbHaetT2jpy9SeaHDH3qUGGAUW-7BtZEhCxXy2dxGSv6A_g7fipsCr5GhRZlPuliykokXIkqfqIN_vMWzmYyA",
               "width" : 3000
            }
         ],
         "place_id" : "ChIJqQIbhpj7j0cRjUguIM__gZw",
         "rating" : 4.4,
         "reference" : "CmRSAAAAzBZCshpypXcbMhrBQIdK2zISd3Q40QRSFO0KKhIrTejnGiZIoASuVqCVtmNBnFsodLWrYtOP-RmwCqDBDVbMheeCbFk7f0L8gwixLx_SGhYTDqPd6B2IwPWWXH5Pb6lxEhBoQtWj-kB-g1ZiOZ74hswNGhSd9Kf9Qj1P2_fdQCTO_VCoTU09JA",
         "types" : [
            "transit_station",
            "bus_station",
            "train_station",
            "point_of_interest",
            "establishment"
         ]
      },
      { ...more results... },
      { ...more results... }
   ],
   "status" : "OK"
}

有人能帮我试一下吗?

你的
结构站是这样的吗

struct Station: Codable {

    let htmlAttributions: [String]
    let nextPageToken: String
    let status: String
    let result: Result

    struct Result: Codable {
        let id: String

        enum CodingKeys : String, CodingKey {
            case id
        }
    }

    enum CodingKeys : String, CodingKey {
        case htmlAttributions = "html_attributions"
        case nextPageToken = "next_page_token"
        case status
        case result = "resulsts"
    }
}

按照我做的模式完成这件事,它会很好地工作。它一直对我有用

struct Station: Codable {
    let next_page_token: String?
    let results: [Results]
}

struct Results: Codable {
    let formatted_address: String?
    let geometry: Geometry
    let icon: String?
    let id: String?
    let name: String?
    let photos: [Photos]
}

struct Geometry: Codable {
    let location: Location
    let viewport: Viewport
}

struct Location: Codable {
    let lat: Float?
    let lng: Float?
}

struct Viewport: Codable {
    let northeast: Location
    let southwest: Location
}

let result:result
是故意丢失的吗?哦-当然是丢失了!!非常感谢你!是的,正如holex已经向我指出的那样(见他在上面评论中的回答),result属性在我最初的请求中完全缺失。简单的解决方法:)啊,我忽略了它。