【问题标题】:How to parse an array of JSON from database in swift如何快速解析数据库中的 JSON 数组
【发布时间】:2018-06-29 07:50:16
【问题描述】:

在我的应用中,我正在尝试解析 JSON 文件。

这是我的 JSON:

[ { "locals": [{"name": "Mission Chinese Food", "localDescription": "A", "photograph": "img_02.jpg", "address": "171 E Broadway, New York , NY 10002", "时间表": "Lunedi al Sabato 08:00-12:00 e 14:00- 18:00 Domenica 08:00-12:00 e 14:00- 18:00", "numberOfReviews": 10、“numberInCity”:2、“cityName”:“New York”、“ratingValue”:5 }、{“locals”:[{“name”:“Mission Chinese Food”、“localDescription”:“A”、“照片”:“img_02.jpg”,“地址”:“171 E Broadway, New York, NY 10002”,“时间表”:“Lunedi al Sabato 08:00-12:00 e 14:00-18:00 Domenica 08 :00-12:00 e 14:00- 18:00", "numberOfReviews": 10, "numberInCity": 2, "cityName": "New York", "ratingValue": 5 }, ]

这是我的 swift 文件:

let url = URL(string: "https://www.litos.srl/showtime/dbGetLocal.php")

do {
    let data = try Data(contentsOf: url!)
    print(data[0])

    guard let rootObject = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [[String:AnyObject]]  else {
    return locals
}

print(rootObject)
let localsObjects = rootObject[0]["locals"] as? [[String:AnyObject]]

    } catch {
        print(error)
        return locals
    }
    return locals
}

这是我在构建和运行代码时在 Xcode 中出现的错误:

60 错误域 = NSCocoaErrorDomain 代码 = 3840 “字符 0 周围的值无效。” UserInfo={NSDebugDescription=字符 0 周围的值无效。} 2018-06-29 09:44:19.293880+0200 eventsProject[13504:4365358] [BoringSSL] 函数boringssl_session_errorlog:第2871行[boringssl_session_read] SSL_ERROR_ZERO_RETURN(6):操作失败,因为连接已通过close_notify警报彻底关闭 2018-06-29 09:44:19.294067+0200 eventsProject[13504:4365358] [BoringSSL] 函数boringssl_session_errorlog:第2871行[boringssl_session_read] SSL_ERROR_ZERO_RETURN(6):操作失败,因为连接已通过close_notify警报彻底关闭 2018-06-29 09:44:19.294258+0200 eventsProject[13504:4365358] [BoringSSL] 函数boringssl_session_errorlog:第2871行[boringssl_session_read] SSL_ERROR_ZERO_RETURN(6):操作失败,因为连接已通过close_notify警报彻底关闭

如何解析我的 JSON 并在 swift 上获取数据?

【问题讨论】:

  • JSON 已损坏,有 3 个左方括号 [ 但只有 1 个右方括号 ] 和一个多余的逗号作为倒数第二个字符。

标签: json swift


【解决方案1】:

您的数据无效。在]括号前不应以,结尾。

【讨论】:

    【解决方案2】:

    试试这个。如果您的 JSON 有效,这将起作用。

    例如。

    [ { “本地人”:[ {"name": "Mission Chinese Food", "localDescription": "A", "photograph": "img_02.jpg", "address": "171 E Broadway, New York, NY 10002", "timetable": " Lunedi al Sabato 08:00-12:00 e 14:00- 18:00 Domenica 08:00-12:00 e 14:00- 18:00", "numberOfReviews": "10", "numberInCity": "2 ", "cityName": "纽约", "ratingValue": "5" }]}]

    if let data = JSON as? NSArray {
            for data in data {
                if let data = data as? [String: AnyObject] {
                    if let data = data["locals"] as? NSArray {
                        for data in data {
                            if let data = data as? [String: AnyObject] {
    
                            }
                        }
                    }
                }
            }
        }
    

    【讨论】:

    • 感谢您的回答,但这是发生的错误:Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 0." UserInfo={NSDebugDescription=字符 0 周围的值无效。}
    【解决方案3】:

    您的 URL 响应数据缺少功能,请检查,字典没有正确的结尾。

    以下是您的 Json 响应

    {"id":0, "name": "Mission Chinese Food", "localDescription": "A", "photograph": "img_02.jpg", "address": "171 E Broadway, New York, NY 10002", "时间表": "Lunedi al Sabato 08:00-12:00 e 14:00- 18:00 Domenica 08:00-12:00 e 14:00- 18:00", "numberOfReviews": 10 ,“numberInCity”:2,“cityName”:“纽约”,“ratingValue”:5 } stdClass Object ( [locals] => 0 ) { "id":1, "name": "Mission Chinese Food", "localDescription": "B", "photograph": "img_02.jpg", "address": " 171 E Broadway, New York, NY 10002", "时间表": "Lunedi al Sabato 08:00-12:00 e 14:00-18:00 Domenica 08:00-12:00 e 14:00-18:00 ”,“numberOfReviews”:10,“numberInCity”:2,“cityName”:“纽约”,“ratingValue”:5 } stdClass Object ( [locals] => 0 ) { "id":2, "name": "Jubba the Hutt", "localDescription": "V", "photograph": "img_02.jpg", "address": " 171 E Broadway, New York, NY 10002", "时间表": "Lunedi al Sabato 08:00-12:00 e 14:00-18:00 Domenica 08:00-12:00 e 14:00-18:00 ”,“numberOfReviews”:10,“numberInCity”:2,“cityName”:“纽约”,“ratingValue”:5 } 标准类对象 ( [locals] => 0 ) 标准类对象 ( [locals] => 0 )

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-22
      • 1970-01-01
      相关资源
      最近更新 更多