iOS 说不能解析这样的 JSON?

2019-01-11 10:38:45 +08:00
 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 这样的数字,无法解析,请教一下大家

5689 次点击
所在节点    问与答
74 条回复
yu5121199
2019-01-11 10:44:42 +08:00
这个格式解析.确实麻烦一些。看需求了。
seats 为什么不能是个数组。
salamanderMH
2019-01-11 10:47:14 +08:00
@yu5121199
我想用 hash 表的 key 对应每个座位位置
他需要一个 Model,说不能用 1,2,这样的数字
66beta
2019-01-11 10:50:25 +08:00
解析式肯定可以的,但我觉得 seats 是数组才合理,配以 seatId:1
gzf6
2019-01-11 10:51:04 +08:00
可以解析,不过把 seats 变成数组,里面放 id 也可以。
jinksw
2019-01-11 10:51:50 +08:00
你这 json 格式正确呀 为啥不能解析
key 会动态变吗? 比如有的 seats 只有"1","3"?有的只有"2","4"?
suzic
2019-01-11 10:54:02 +08:00
这种不光 ios 麻烦吧,楼上建议就可以,改成求组,key 放进去
salamanderMH
2019-01-11 10:54:05 +08:00
@66beta
他说 model 不能用 1,2,这样的数字做 key
suzic
2019-01-11 10:54:30 +08:00
@suzic 数组
geelaw
2019-01-11 10:56:37 +08:00
@salamanderMH #7 model 和 JSON 是两回事儿,最不济先拿到 dictionary/map 再按照这种方式填上去。
jinksw
2019-01-11 10:57:04 +08:00
@salamanderMH 你这 json 格式正确 从 json 角度来说可以做 key
但是客户端一般会用一个库自动将 json 转换成一个对象
在定义这个对象类的时候 因为语法 不能用纯数字 做变量名,所以他会跟你那么说
想解决也是可以的,不过你这个最好定义个数组吧,把 id 放到每个 seat 里去
justahri
2019-01-11 10:58:15 +08:00
"data": [
{
"nickname": "salamander",
"avatar": "*******************",
"uid": 5464,
"seats": "1"
},
{
"nickname": "coopk、",
"avatar": "***********************",
"uid": 54645645,
"seats": "3"
}
]

这样不好吗
wysnylc
2019-01-11 10:58:36 +08:00
![]( )
你这是字符串不是数字,的确前端 json 中 key 不兼容数字但你这不是
jason19659
2019-01-11 10:59:13 +08:00
key 是固定的就可以
finab
2019-01-11 11:01:50 +08:00
固定数字做 Key 是可以的,数字不能做字段名但可以 map
例如 ObjectMapper 中 key1 <- map["1"] 这种

不过你这种结构不能很好的解析成 Model,你的 key 是不固定的,只能把 seats 下当成字典来用
salamanderMH
2019-01-11 11:04:51 +08:00
@finab
key 是 1-6 的(取值是固定的),我只是想返回一个 hashtable 而已
bbbb
2019-01-11 11:07:20 +08:00
他我觉得他的意思是设置 model 的时候属性不能为数字。他可以转换,你也可以改。
salamanderMH
2019-01-11 11:09:01 +08:00
@bbbb
感谢,我知道了
cpdyj0
2019-01-11 11:09:47 +08:00
虽然符合 JSON 语法,但是 parse 起来很麻烦,很难直接映射到对象
learnshare
2019-01-11 11:11:54 +08:00
seats 应该是个数组 /列表,编号属于每个成员

不过这个结构问题不大,可以解析,然后转换为需要的格式就好了
cnbobolee
2019-01-11 11:15:42 +08:00
这个不是不能解析的问题吧,只是你如果要 model 的话,怎么设计,key 是动态的,放到哪个语言也不能解析。设计有问题

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

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

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

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

© 2021 V2EX