当前位置: 首页 > article >正文

Jsoniter Unmarshal类型错误的友好提示

文章目录

    • 1. 写在最前面
    • 2. 野生库解决
      • 2.1 解决
    • 3. 官方库解决
      • 3.1 解决
    • 4. 碎碎念

1. 写在最前面

解决: 优化 Json Unmarshal 的时候定义的数据类型,跟传入的类型不一致的问题。示例

在这里插入图片描述

注:代码示例 https://go.dev/play/p/7YsDSW2hAv1?v=goprev

问: 为什么不用 golang json 的官方库,提示会更友好?官方库提示,json: cannot unmarshal number into Go struct field Tom.address of type main.Address

答: 因为官方库在 unmarshal 的时候,无法区分大小写,比如

在这里插入图片描述

注:以上代码示例 https://go.dev/play/p/AKLSNXjMIpQ?v=goprev

2. 野生库解决

为了解决一个问题,引入了另一个问题,但是不要慌,作为野生 golang 的 json 官方库,肯定提供了一种解决上述问题的方式。

注:野生库 -> github.com/json-iterator/go

2.1 解决

使用 RegisterFieldDecoderFunc 函数定义特定的字段解码函数。解决的验证如下:

在这里插入图片描述

注:以上代码示例 https://go.dev/play/p/W1tdJd09PQv?v=goprev

3. 官方库解决

虽然官方库提示已经很友好,但是本着求真的精神,请教了一个 chatgpt 是否有更优的解法,果然 chatgpt 没有辜负我的期望。

3.1 解决

使用官方库提供的 json.UnmarshalTypeError 断言 json error 的类型,在出现 unmarshal 类型不匹配的时候,修改错误提示。

在这里插入图片描述

注:以上代码示例 https://go.dev/play/p/8jKRc9wKFxj?v=goprev

4. 碎碎念

今天真的上海最冷的一天,虽然已经过了冬天,最近这个天气真的很难理解!

  • 真心建议,千万不要看见别人发光,就觉得自己暗淡,他强任他强,清风拂山岗,生活中,人和人的节奏不一样,有人三分钟泡面,有人三小时煲汤,有人外卖已送达,你要的方式,就坚定走下去别胡思乱想每个花期都不一样,不必焦虑有人比你提前拥有,所以别搞得不堪重负样子,大胆的往前走你的光芒终将被照亮。

  • 女孩子应该一辈子都觉得自己很美丽,而非只是在风华正茂的时候觉得自己很美。

  • 只有你的敌人才希望你瘦弱,同为女性,我希望你跑得快,蹦得高。


http://www.kler.cn/a/540741.html

相关文章:

  • Deepseek-v3 / Dify api接入飞书机器人go程序
  • pip3命令全解析:Python3包管理工具的详细使用指南
  • 如何通过PHP接入DeepSeek的API
  • 多光谱成像技术在华为Mate70系列的应用
  • 轻松理解CSS中的float浮动元素
  • 【电机控制器】STC8H1K芯片——低功耗
  • Segformer模型的平台部署和项目应用
  • N-Beats:一种用于时间序列预测的纯前馈神经网络模型
  • 仿 RabbitMQ 实现的简易消息队列
  • 【Docker】从技术架构到容器实战{空间隔离/资源控制/LXC容器/mount}
  • Git冲突解决技巧
  • 日常吐槽。
  • PostgreSQL的学习心得和知识总结(一百六十七)|深入理解PostgreSQL数据库之静态语法检查工具PgSanity的使用和实现
  • 示波器使用指南
  • [7] 游戏机项目说明
  • SQL自学,mysql从入门到精通 --- 第 15天,数据导入、导出
  • 《深度学习》——pytorch框架及项目
  • 处理STM32 DMA方式下的HAL_UART_ERROR_ORE错误
  • 中央处理器
  • 分布式微服务接口基于多线程进行性能优化
  • 蓝桥杯试题:冒泡排序 选择排序
  • 六.logback记录日志文件并按大小日期分割文件
  • 操作系统调度算法解析(SJF)
  • EtherNet/IP转Modbus TCP实现三菱变频器与西门子PLC通讯的配置案例
  • 从零复现DeepSeek R1:从V3中对MoE、MLA、MTP的实现,到Open R1对R1中SFT、GRPO的实现
  • ESP8266配置为TCP客户端,连接电脑和手机(使用Arduino配置)