JSONSerialization 没有在服务器发送时序列化数据

Posted

技术标签:

【中文标题】JSONSerialization 没有在服务器发送时序列化数据【英文标题】:JSONSerialization did't serialised data as server send 【发布时间】:2019-11-07 10:57:05 【问题描述】:

。它反转数据。我使用后端的数据过滤器 API。它发送准确的数据,我也检查了邮递员和安卓端,但 ios 代码改变了响应。

do 
    if let json = try JSONSerialization.jsonObject(with: usableData, options: .mutableLeaves) as? [String: Any]   

    
 catch let error 
    OperationQueue.main.addOperation() 
        SVProgressHUD.dismiss()
    

但如果我将数据转换为字符串,那么它的显示是正确的。为什么?

var jsonString : String?
jsonString = String.init(data: data, encoding: String.Encoding.utf8)

【问题讨论】:

你得到什么错误?顺便说一句,mutableLeaves 在 Swift 中完全没用。 那么请建议什么是正确的形式?其实我没有使用任何阅读选项。 不,我是说jsonString的开头。并将其添加到问题中,而不是在 cmets 中。再次去掉options参数,默认值为no options Dictionary 是无序的,您只需要使用键访问所需的值。 字典没有顺序。字典数组 【参考方案1】:

最后,我找到了解决方案。服务器以字典形式发送超过 100 个键的数据,格式不正确,使用这种格式,我们的 json 序列化无法序列化从服务器获取的数据。所以我们决定将结构从字典更改为数组。

格式不正确

1025
id:1025
name:xyz
area:23123

1026
id:1026
name:xyz
area:23123

1027
id:1027
name:xyz
area:23123

正确的形式

 [
    id:1025
    name:xyz
    area:23123
    ,
    id:1026
    name:xyz
    area:23123
    ,
    id:1027
    name:xyz
    area:23123
    ]

【讨论】:

以上是关于JSONSerialization 没有在服务器发送时序列化数据的主要内容,如果未能解决你的问题,请参考以下文章

JSONSerialization 中的 option[]

Swift 3 JSONSerialization 序列化字典包含 \ 字符

JSONSerialization AnyObject SWIFT3 转换问题

JSONSerialization 返回错误,但是 php 解析器

在 swift 中使用 Alamofire 的 JsonSerialization 错误

JSONSerialization 和 EXC_BAD_ACCESS