
1 yzbzz 1 天前 不是难,是麻烦。要写一堆逻辑 |
2 shakaraka PRO golang 也不见得可以啊,你觉得可以,那是因为有人干了脏活累活 |
5 JoeJoeJoe PRO 你是 PHP 做的后台接口吗? 之前遇过类型是{}, 因为结果是空的, 返回了一个[], 这个你要是让客户端来处理大概有点说不过去. ps: 字段动态+类型动态在原生看来真的很折磨 出了问题都赖客户端没适配好 |
6 ty29022 1 天前 我没看懂, 原样传递要序列化做什么? “接口返回一个 json 字符串”这不就是序列化的结果? |
7 niubilewodev 1 天前 可以,就是一直被吐槽的 map 一把梭。 |
9 adoal 1 天前 首先,我猜你想说的是“静态类型语言”。因为哪怕 Python 都算是强类型语言。 其次,有运行时类型自省机制的静态类型语言里照样也有 object/any/...等表示“没运行到现场时不确定”的类型。 再次,JSON 这么简单的数据格式,一共就 3 种原子类型和 2 种复合类型。 最后,JSON 这么成熟的技术,主流编程语言早就有久经考验的库支持了,又不用从头撸(就算从头撸工作量也不是很大)。 |
11 adoal 1 天前 结论,那个人就是不想干。 |
12 changdy 1 天前 如果客户端不需要操作的话 那太简单了. 直接用字符串接受.然后原样再发给第三方. 但是这种交互方式好像有点奇怪.. |
13 beidounanxizi 1 天前 2 个都不懂序列化和反序列化吧 就是个 map 存储完 类型判断而已 哪有这么多废话 他不想写的原因是 这锅 不想扣到他自己头上 他接受 就代表可以接受你任何 json 他都能处理 是我 也不想 对于 IOS 他拿到一个不是确定的 对于他 UI 展示 没鸡毛帮助 |
14 dumbass 1 天前 JSON.parse() 一把梭 |
15 SoulFlame OP |
16 94 1 天前 @SoulFlame #15 ,我的想法和#12 、#13 一样,感觉不想背锅的原因。 如果额外传输的内容有问题,从外部第三方来看源头就是 iOS 端。会先找到他,然后他再找到你。和你扯皮我觉得是想留下沟通记录,到时候出问题好甩锅给你。 |
17 beidounanxizi 1 天前 @SoulFlame 那你告诉他 直接用 map 直接存就好了 不需要任何处理 感觉是沟通问题 不如告诉他 序列化成 map 就行了 或者直接给他 swift 代码得了 |
18 xtreme1 1 天前 强/弱类型本身就不是一个良定义的概念, 拿这东西出来说事已经没必要和他讨论其它的了 |
19 evilHa 1 天前 都 AI 编程时代了,咋还纠结这个,让 AI 写不就行了。 本质是没有现成的东西或者他不会,他不想解决。 |
20 woodfizky 1 天前 有种我刚入行时候菜鸡互啄的感觉。。 首先那叫反列化,把 JSON 字符串转成各个语言/框架对应的对象。 把对象转成 JSON 字符串那才叫序列化。 跟是不是强类型没关系,反序列化之后什么语言基本都会有一个最基础的对象。 就算语言本身没有自带 JSON 序列化相关工具,那也会有相关的第三方包可以做这事情。 只是看开发用什么框架、什么对象去再进一步承载这个 json 反序列化之后的。 IOS 不清楚,拿 Python 举例,就比如请求体是 JSON ,Web 框架是 FastAPI ,可以直接支持 JSON 反序列化为 pydantic 对象,过程中还会自然而然地对每个值做 validation ,还能自定义 validator 。 你如果刚入行,对方也是刚入行,那大家都是菜鸟,在菜鸡互啄中成长,很正常。 但是你们俩谁要是不是刚入行的那就得反思了。 |
21 zuokanyunqishi 1 天前 @JoeJoeJoe 如果约定的不是 json 数组结构,是 json 对象,就返回 stdClass 啊 ,这个格式化 json 后就是 {}; |
22 JoeJoeJoe PRO @zuokanyunqishi 不是 我说的是我之前碰到过的一种情况, 就是 PHP 那边空对象好像返回的是个空数组 op 碰到的这种情况可能就是我 ps 里面写的, 怕被甩锅. 因为第三方接收参数如果没什么限制的话, 其实一个 dic 对象就能反序列化传过去, 如果第三方要求对应的数据模型的话, 才会有一些特殊处理. |
24 SoulFlame OP @jonty #23 需要反序列化是因为第三方接口不接受 json 传参,接收 Content-Type:application/x-www-form-urlencoded |
25 SoulFlame OP @zuokanyunqishi #21 @JoeJoeJoe #5 你说的这个是另一个前后端协作问题,和本文无关。 PHP 我也写,多年协作生涯中也遇过你描述的这个问题,所以我现在搭的框架,基础控制器里面都是这样统一转化的,上代码: |
26 SoulFlame OP @SoulFlame #25 $output = [ 'code' => $code, 'msg' => $message, 'data' => $data ?: new \stdClass(), ]; |
27 Building 1 天前 @woodfizky Swift 官方的反序列化框架只是一种协议,并不存在基础对象,说实话感觉 OP 并不理解反序列化的具体意思,反序列化主要作用还是方便自己使用.语法,反不反序列化又有什么关系呢,除非使用的第三方 framework 必须用到对象,那自己生成绑定一下也可以了,以前 OC 对象是可以动态生成对象属性的而且对.语法有特殊处理,Swift 肯定是做不到的,也就是说没有提前定义好,任意 json 对象例如 'person': { 'age': '18' } 那肯定是反序列不了成 Swift.Person.age 的 |
28 LHN 1 天前 ai 时代还在纠结技术实现就不可取 |
29 SoulFlame OP @Building #27 首先我明白反序列化的意思。然后我可以很明确的告诉你客户端需要反序列化,因为服务端给的是一串 JSON 字符串,而客户端需要调用的第三方 API 不接受 JSON 字符串,接收 Content-Type:application/x-www-form-urlencoded 。 至于你后面说的 Swift 语言里面的东西,我不了解该语言就不发表意见了。 最后,还是如我开始说的,客户端已经实现该功能了,至于他怎么做到的,我已不关心了,不是我负责的部分。 |
30 SoulFlame OP @LHN #28 咋说呢,其实谁都有第一次做某个需求或者接触新技术的时候,作为技术,在没有明确论证过之前,可以说比较困难,或者需要时间尝试。但像我上面说的那个需求,沟通中没有去求证,自己没有经历过就直接回复说做不了、做不到,我觉得是不负责任的 |
31 strobber16 22 小时 9 分钟前 via Android 类型警察,出警 |
32 nightwitch 9 小时 9 分钟前 接口连 schema 都定不下来我也不接,谁知道里面会有什么东西,搞不好说不定有 emoji 在里面。上游拉屎很方便,调接口的人接下来以后无穷无尽的 bug 。 |