Моя строка Json не декодируется с использованием JSONSerialization.jsonObject () - PullRequest
0 голосов
/ 10 мая 2018

Я получаю действительную строку Json из моего HTTP-запроса, который выглядит следующим образом

"[{
    "id”:10,
    "user_id":"77da74e6-3e03-403d-9c1a-91f231233515”,
    "friend_user_id":"fc879bf5-c53d-4a4e-b3a4-dab7a8266a2r”,
    "name":"Tommie Smith”,
    "type":"active”,
    "created_at":"2018-05-02 14:53:09",
    "updated_at":"2018-05-02 14:53:09",
    "friend_user":{
        "id":"fc879bf5-c53d-4a4e-b3a4-dab7a8266a2r",
        "first_name”:”Allen”,
        "last_name”:”Williams”,
        "email”:”allen.williams@example.org",
        "date_of_birth":"1996-03-05 00:00:00",
        "created_at":"2018-05-02 14:53:07",
        "updated_at":"2018-05-02 14:53:07",
        "deleted_at":null
    }
},
{
    "id”:11,
    "user_id":"77da74e6-3e03-403d-9c1a-91f231233515”,
    "friend_user_id":"96990d13-372e-46f7-9187-94988954455b”,
    "name":"Mr. Thomas Atkins”,
    "type":"not",
    "created_at":"2018-05-02 14:53:10",
    "updated_at":"2018-05-02 14:53:10",
    "friend_user":{
        "id":"96990d13-372e-46f7-9187-94988954455b",
        "first_name”:”Trevor”,
        "last_name”:”Wright”,
        "email”:”trevor.wright@example.net",
        "date_of_birth":"1983-07-27 00:00:00",
        "created_at":"2018-05-02 14:53:08",
        "updated_at":"2018-05-02 14:53:08",
        "deleted_at":null
    }
}]"

Я знаю, что это то, что я получаю, поскольку я использую следующий код для возврата строки с моими данными

let string = String(data: data, encoding: String.Encoding.utf8)

Однако, когда я использую приведенный ниже код для анализа моих данных, json возвращает nil

let json = try JSONSerialization.jsonObject(with: data) as? [String: AnyObject]

Что не так с этим утверждением?

1 Ответ

0 голосов
/ 10 мая 2018

Пожалуйста (научитесь) прочитайте JSON, это довольно просто. Существует только 2 (два!) Разных типа коллекций:

  • {} - словарь, в Swift [String: Any].
  • [] - это массив, в Swift [Any], но в большинстве случаев это массив словарей [[String: Any]].

так что JSON явно массив. В Swift 3+ значение JSON никогда AnyObject

let json = try JSONSerialization.jsonObject(with: data) as? [[String: Any]]

Примечание:

Ошибочные двойные кавычки не являются причиной ошибки, в противном случае jsonObject(with будет throw ошибка

...