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 这样的数字,无法解析,请教一下大家

5990 次点击
所在节点    问与答
74 条回复
ElvY
2019-01-11 15:50:05 +08:00
严重同意 30 楼,很操蛋。都是你这种的项目维护起来太麻烦了吧
OctWu
2019-01-11 16:13:54 +08:00
@cnbobolee 有什么区别么。我自己写的话,直接给 response 做成 model

struct ResponseData<T: Decodable> {
let data: T
}

来个 ResponseData<Fuck>.self 呗

不就完事了,解决方法千千万,那种 想要

struct Seats {
var key1: Seat
var key2: Seat
}

的才是刚毕业的小学生吧。

如果一个模型需要多个接口返回自己拼的,我一般才爱怼。这种我说了,看需求来说,还真不一定不方便
reus
2019-01-11 16:52:43 +08:00
当然能解析,你这个是字符串 "1",又不是数字 1

在 go 里,用 map[int]struct{...} 或者 map[string]struct{...} 都能正确解析,我不知道什么垃圾语言这都不支持。
skaly
2019-01-11 17:20:28 +08:00
无谓制造所有人的麻烦,搞点符合大多数人认知的东东出来,有些自以为设计很好的东东,增加了很多沟通成本,实现成本,挺不友好的。要是引起项目延期,你来背锅?
ps:同意 11 楼
NotNil1
2019-01-11 17:37:46 +08:00
使用 json 时尽量不要直接把 map 转为 json。
sanqian
2019-01-11 17:47:36 +08:00
可以是可以,但是你这样没必要。
cinhoo
2019-01-11 17:53:07 +08:00
可以,很恶心
183387594
2019-01-11 18:02:54 +08:00

我也遇到过 先和安卓对接的(左) 后来 ios 说取出来会乱序 改成 右边的了😂
mht
2019-01-11 18:03:51 +08:00
这个形式 在只用 PHP 和 js 的前端对接情况下 有时候很好用 直接根据 key 去取对应的数据

最近学了安卓 发现之前自己写的接口 如果是这种形式的话 想对接的确不是很容易 但是也还是可以解决的...
v2yehen
2019-01-11 18:12:48 +08:00
讲真,对接碰到这样的数据我会怼死他。
改成数组万事大吉!
Leu
2019-01-12 09:26:20 +08:00
一看就是新手弄得,好好得数组不用。
deepSeaCode
2019-01-12 09:40:07 +08:00
iOS 可以解析这样的数据,只是很恶心而已。遇到后台出这样的数据,iOS 老人应该会问后台是不是新人吧。这样的数据只有新手才会这么写,楼主怕不是新手遇新手吧。
bumz
2019-01-12 14:52:39 +08:00
@183387594 #68 字典本来就是无序的
而且右边也不对,key 每个都不一样
应该这样

[{"key": ..., "value": ...}, {"key": ..., "value": ...}]
loren1994
2019-01-12 17:54:13 +08:00
"1","3"是动态的吧?确实不好解析的

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

https://tanronggui.xyz/t/525932

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

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

© 2021 V2EX