V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  BeautifulSoap  ›  全部回复第 29 页 / 共 106 页
回复总数  2110
1 ... 25  26  27  28  29  30  31  32  33  34 ... 106  
2023-09-19 21:48:46 +08:00
回复了 BeautifulSoap 创建的主题 Go 编程语言 踩到 Go 的 json 解析坑了,如何才能严格解析 json?
@Maboroshii
@kumoocat
“Go 不用指针就代表不能为 null”
“那你知不知道,golang 里面,struct 只有 0 值没有 null 值呢”

你们说的对啊,Go 里一个类型不是指针代表这个类型不能赋值 nil ,json 解析的时候遇到 null 意思就是要把 nil 赋值给非指针,直接报错不是再正常不过的想法吗?


“你也知道,你列举的这些语言,对象是可为 null 的”
这里面和 go 最相近的是 Go ,因为 kotlin 和 go 一样类型分可空/非可空(对应到 go 近似看成指针/非指针)。当尝试将 null 解析到非可空字段时,kotlin 是可以报错的
2023-09-19 21:40:04 +08:00
回复了 BeautifulSoap 创建的主题 Go 编程语言 踩到 Go 的 json 解析坑了,如何才能严格解析 json?
@tairan2006 要改成指针的可不止匿名类,匿名类里的 AA 、BB ,外面的 A 和 B 也都得要改成指针哦。然后就出现了我 2L 说的问题,为了解决 null 判定这一个问题,整个 struct 全部字段都定义成指针,实在过于得不偿失了。

@Maboroshii 其实问题不在“已知字段会为 null”,而是 API 文档已经明确约定了些字段全都不能为 null ,但外部接口/前端就硬是给你传了 null (不要问为什么,后端永远不能相信前端传给你的数据是什么牛鬼蛇神,实际上这次出事就是因为约定了非 null 的字段外部接口给传了 null 。)
2023-09-19 21:31:08 +08:00
回复了 BeautifulSoap 创建的主题 Go 编程语言 踩到 Go 的 json 解析坑了,如何才能严格解析 json?
@haoxue 多谢我试试
@tuxz 正常来说一个实际的项目中,要从 json 解析出 struct 的数量是几十上百个的。。。一个个实现不太现实,写通用方法塞进去倒也是个办法,但是也容易出纰漏


@ye4tar
@RedisMasterNode
是的,我思前想后可能也就只能自己魔改官方 json 包了。不过倒也用不着 validator ,直接在解析 json 的时候,如果目标字段为非指针类型,遇到 null 就直接报错可能会更直接的。一直不太想自己魔改主要是总感觉自己写的东西是重复造轮子,,,,
2023-09-19 21:22:45 +08:00
回复了 BeautifulSoap 创建的主题 Go 编程语言 踩到 Go 的 json 解析坑了,如何才能严格解析 json?
@rekulas 如果你是个合格的程序员并且经验丰富接触的语言也不只有一种的话,那么你会清楚一般来说语言解析遇到 null 的话,都会尽量将其解析为对应语言中的空指针/null/None 一类。比如 python 把 null 解析为 None, js 、php 、java (大部分 json 包)会把 null 解析为 null 。而对于 kotlin 这种明确区分了空值非空值的语言,将 null 解析为非空类型的字段会直接报错。

话题绕回来,对于 json 来说 null 存在是合理的,但是将 null 解析为非指针的时候不报错解析为默认空值是不合理的。请问你如何区分 {"a":null} {"a":0} ?而且落地到实际项目中,假设一个 api 接口所有字段都是禁止传 null 的,但是前端/外部接口就硬是因为 bug 之类的给你传了个 null ,请问你认为是直接报错拒绝请求比较好呢,还是直接解析成对应类型空值去处理业务从而引发严重事故好?
2023-09-19 20:51:58 +08:00
回复了 BeautifulSoap 创建的主题 Go 编程语言 踩到 Go 的 json 解析坑了,如何才能严格解析 json?
@knightdf
@dobelee
@pkoukk
关于 validation 这件事,你们真的应该亲自试试,就会发现这根本不是 validation 能解决的问题。
null 会被解析为默认空值,如 int 字段传入 null 会被解析为 0 ,即便用 validator 这个包做 validation 检测也只能检测字段是不是 0 。但在实际业务中 int 值字段为 0 基本都是正常值,不应该被报错


@RedisMasterNode
你理解错 9L 的意思了,你提供的这段代码其实是有问题的。比如你尝试解析下 `{"name": "john", "age": 0}` 是会报错的(有的地区是有 0 岁这个概念的哦),单纯在解析后用 validator 是没法区分传入的到底是 0 岁还是 null 的
2023-09-19 18:01:24 +08:00
回复了 BeautifulSoap 创建的主题 Go 编程语言 踩到 Go 的 json 解析坑了,如何才能严格解析 json?
@ye4tar 试了下没效果。json 包其实不不支持 notnull, required 标签的
2023-09-19 16:19:26 +08:00
回复了 BeautifulSoap 创建的主题 Go 编程语言 踩到 Go 的 json 解析坑了,如何才能严格解析 json?
@fgwmlhdkkkw json.Unmarshal() 会把 null 解析成对应类型的空值,比如 int 的话就是 0 。validation 只能判断是不是 0 不能判断是不是 null ,派不上用场
2023-09-19 15:37:14 +08:00
回复了 BeautifulSoap 创建的主题 Go 编程语言 踩到 Go 的 json 解析坑了,如何才能严格解析 json?
@zhs227 可能不太现实,因为通过定义成指针来满足第二点需求的话,意味着结构体全部字段都必须定义成指针。如果字段非常多(几十上上百个)一个个判断代码量和工作量非常大增减字段容易出纰漏(最终要上反射)。而且所有字段定义成指针的话,使用起来会相当难受
2023-09-19 10:25:30 +08:00
回复了 KOMA1NIUJUNSHENG 创建的主题 问与答 哪些人会买 iPhone 的 plus 系列
数字系列和 pro 的屏幕太小了,我要买只会考虑 plus 或 pro max
2023-09-18 15:46:49 +08:00
回复了 cloud2000 创建的主题 问与答 寻找 Chrome 插件:让 GPT 读取并解析网页内容后进行提问
edge 不是自带吗
虽然我很能喝酒,过年和老家那些老头灌白酒也行,但日本呆久了,梅酒,各种口味的沙瓦,高球鸡尾酒之类的喝多了,你让我闲得没事去喝四五十度的酱香白酒,我怕不是脑子抽了
白酒这种联动只能说是死前挣扎,再过十几年白酒越来越不行肯是趋势
2023-09-17 12:36:45 +08:00
回复了 1YsX1 创建的主题 NAS 请问有没有适合本地搭建的管理连载视频的平台?
?这需求 jellyfin 不是完美满足吗,你建媒体库的时候类型选错了,别选电影
2023-09-16 02:05:13 +08:00
回复了 icemberry 创建的主题 Android 我也来谈谈 Apple 用户切换到 Android 手机后的感受
@brader samba 服务器任意一个第三方文件管理器都支持的东西。mixplorer (不光有 samba ,ftp/sftp/http/webdav 服务器都有),x-plorer ,es 文件浏览器之类的基本算是标配了
2023-09-14 19:59:04 +08:00
回复了 zhuoyue100 创建的主题 Go 编程语言 怎么提升 golang 开发水平
实际找个项目去做
很多细节和知识只看代码不亲自动手是没法真的领会为什么要这么作的
2023-09-12 21:18:17 +08:00
回复了 zx9481 创建的主题 Windows 2023 年 9 月 win11 还好用吗?
@BeautifulSoap 打错,是 23H2
2023-09-12 21:17:53 +08:00
回复了 zx9481 创建的主题 Windows 2023 年 9 月 win11 还好用吗?
再过一段时间 23H3 要发布了,任务栏强制不合并,最后一个阻碍升 win11 的阻碍没了
然后资源管理器自带 7z ,rar 等格式解压,算是比之前好多了
是个眼界和所处环境的问题,国内 php 用得没那么多了,以为 php 要完了。但是世界范围内 PHP 依旧是主流语言。一堆新网站项目依旧上的 php
2023-09-09 12:26:18 +08:00
回复了 gsjmoveon 创建的主题 VPS v.ps 家的 cn2 服务器疑问
别碰 v.ps
你会变得不幸
2023-09-06 13:30:44 +08:00
回复了 vicalloy 创建的主题 Python 你们的 Python 代码加不加 Type Hints
反正已经不用 python 写大项目了,小项目或者脚本我是不太加的,主要是 python 这 type hint 实在写起来难受死了
给 List 之类基础类型写个 type hint 还得导包
给函数指针写 type hint 要导入 Callback ,然后 Callable[[typ1, type2 ..., type3], type3] 这样不光看得闹心我写得也是闹心,尤其一个入参出参复杂点的函数
而且 idea/pycharm 不知为什么经常 type hint 工作不正常,其他地方明明都加了 type hint 了,一看创建的变量类型 Any ,摔
反正体验说不上太好
1 ... 25  26  27  28  29  30  31  32  33  34 ... 106  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1175 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 39ms · UTC 17:20 · PVG 01:20 · LAX 10:20 · JFK 13:20
Developed with CodeLauncher
♥ Do have faith in what you're doing.