iOS 说不能解析这样的 JSON?

2019 年 1 月 11 日
 salamanderMH

题目描述

返回的 json 格式如下

{
    "status": 1,
    "content": "get seats info successfully !",
    "data": {
        "seats": {
            "1": {
                "nickname": "salamander",
                "avatar": "*******************",
                "uid": 5464
            },
            "3": {
                "nickname": "coopk、",
                "avatar": "***********************",
                "uid": 54645645
            }
        }
    }
}

他说,seats中的数据不能以 1,3 这样的数字,无法解析,请教一下大家

7147 次点击
所在节点    问与答
74 条回复
0x000007
2019 年 1 月 11 日
11 楼那种很好,你这种没法直接转 Model,还要多操作一步
0x000007
2019 年 1 月 11 日
好奇这种 json 格式安卓那边没问题?好像安卓那边更恶心这种格式
cc85060
2019 年 1 月 11 日
@0x000007 感觉楼主是个新手,我这边后端接口要是出这样的数据可能会被我怼死。。。
nxforce
2019 年 1 月 11 日
解析没问题,不过设计有问题,seats 应该是一个数组,那些 key 如 1,3,应该作为 position 弄到 bean 属性里。
maplejaw
2019 年 1 月 11 日
这种格式你必须保证 key 只有 1,3。否则建议 11 楼的格式。
holonunu
2019 年 1 月 11 日
@salamanderMH 可以解析,model 中 key 不能是数字。

但是!!!

可以把 model 中的 key 定为 key1、key2、key3,解析的时候映射一下:

1 -> key1
2 -> key2
3 -> key3

我猜你这个同事要么是嫌麻烦要么就是没了解第三方的 json-model 框架。
Vegetable
2019 年 1 月 11 日

不推荐
dremy
2019 年 1 月 11 日
如果 id 是订单号这种超长的数字串,做成 key 也不能解析???
objective-c 和 swift 这么弱的嘛
dremy
2019 年 1 月 11 日
@cnbobolee
动态语言先了解一下
静态语言的话,Java 有 Map,Go 有 interface{} 怎么不能解析?
xqc6321
2019 年 1 月 11 日
这不是嫌麻烦的问题。
这是操蛋的问题。
严重同意 23 楼
salamanderMH
2019 年 1 月 11 日
结贴吧
zr8657
2019 年 1 月 11 日
11 楼正解,同意 23 楼
zqx
2019 年 1 月 11 日
ios 不了解,但是大多数语言变量名是不能数字开头的
Deville
2019 年 1 月 11 日
这根本不是数据格式能不能解的问题。。。。。。。而是看着闹心。。。
wly19960911
2019 年 1 月 11 日
理解下,不是 iOS 说格式错误,而是格式解析出来不好用。
cloverstd
2019 年 1 月 11 日
可以解析,你确定你是 "1" 不是 1 ?
rb6221
2019 年 1 月 11 日
目测 php 写的,安卓表示这种返回大概率会被怼
allenhu
2019 年 1 月 11 日
某些 json 库确实没法处理这种格式的 JSON,因为它没法 seats.1 这样取出结果,只能 seats.user1 ;所以还是建议换成数组吧,不管是语义上还是格式上,都更加清晰。
OctWu
2019 年 1 月 11 日
能解析啊。

struct Fuck: Codable {
var seats: [String: User]
}

见过这种,有的公司用组合接口,为了图方便,这个 seats.key 可能下面还有别的用。虽然说客户端写起来是挺烦躁的
cnbobolee
2019 年 1 月 11 日
@dremy 看清我的答案再说,说的是要 model 做解析。哎!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/525932

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX