Golang做项目遇到bug invalid character ‘<‘ looking for beginning of value

这篇具有很好参考价值的文章主要介绍了Golang做项目遇到bug invalid character ‘<‘ looking for beginning of value。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、bug描述

    事先在resis中存入哈希:

HSet users 100 "<\"userId\":100,\"userPwd\":\"123456\",\"userName\":\"scott\">"

创建User结构体,拥有3个字段及对应json tag

type User struct {
	UserId   int    `json:"userId"`
	UserPwd  string `json:"userPwd"`
	UserName string `json:"userName"`
}

通过查询redis得到这个user的哈希value为res,为string类型“<\"userId\":100,\"userPwd\":\"123456\",\"userName\":\"scott\">"

我在把这个字符串转成[]byte后使用json.Unmarshal()来反序列化,把解析后的数据赋给user实例

user = &User{}
err = json.Unmarshal([]byte(res), user)
if err != nil {
		fmt.Println("json.Unmarshal([]byte(res), user)出错 err=", err)
	}

运行后提示json.Unmarshal([]byte(res), user)出错 err= invalid character '<' looking for beginning of value

2、bug分析

出错可能在这几个方面:

1)User结构体字段的json tag与写到redis哈希里value的字段名称不同

2)string类型的res转[]byte出错

3)json.Unmarshal操作遇到了编解码的问题

3、问题排查与定位

检查代码和redis的哈希排除了情况1),接下来考虑情况2)

打印出res和[]byte(res)分别为:

<"userId":100,"userPwd":"123456","userName":"scott">

[60 34 117 115 101 114 73 100 34 58 49 48 48 44 34 117 115 101 114 80 119 100 34 58 34 49 50 51 52 53 54 34 44 34 117 115 101 114 78 97 109 101 34 58 34 115 99 111 116 116 34 62]
找到ASCII码对照表(json使用utf-8进行编解码,而utf-8把ACSII码都囊括进去了)

res字符串第一个字符是<,对应的ASCII十进制数字正是60。随后一一检查其余字符也是完全对应的。至此排除了情况2),考虑情况3)。检索此bug解决办法时,看到有网友提到类似问题是utf-8的BOM导致的,可以在Goland中更改相关设置,我检查了下我自己的设置也没有问题

Golang做项目遇到bug invalid character ‘<‘ looking for beginning of value,bug,go,json

3、问题解决

在排查问题时我忽然发现有人写进redis的哈希的value都是花括号{},而不是尖括号<>,bug报错invalid character '<' looking for beginning of value应该是解码时无法识别<。所以我改了花括号,结果显示没有bug了。

4、原因总结

json编解码格式不熟悉,还需要多多观察和使用文章来源地址https://www.toymoban.com/news/detail-679878.html

到了这里,关于Golang做项目遇到bug invalid character ‘<‘ looking for beginning of value的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 十一、做高并发内存池项目过程中遇到的bug以及调试bug的方法和心得

    第一个bug是内存问题,程序直接崩溃,问题出现在:GetOneSpan函数中的切分span的时候结尾的span1的next没有置空。 第二个bug是还小内存块给span的时候找不到小内存所属的span,原因是NewSpan函数中的一个if分支返回前没有把id和span*的映射关系存好。 修bug前: 修bug后: 第三个bug出

    2024年02月10日
    浏览(41)
  • CondaValueError: Malformed version string ‘~‘: invalid character(s)

    创建python3.6环境 conda create -n py36 python=3.6 anaconda和 升级conda环境 conda update conda和conda upgrade -n base -c defaults --override-channels conda都没用 都报这个错: Solving environment: failed CondaValueError: Malformed version string ‘~’: invalid character(s). 解决方法: 删除自己设置过的国内源 conda config --r

    2024年02月16日
    浏览(61)
  • Jenkins Pipline使用SonarScanner 检查 VUE、js 项目 中遇到的Bug

    在 Jenkins 上使用 Pipline 进行集成,利用 SonarScanner 做静态代码扫描的过程中,遇到了几个问题,这里记录了一点解决办法。 自动安装 SonarScanner 插件,在 Pipline 脚本中使用官方 wiki 中说明的脚本: 但是在扫描的时候总是报错,可以看出是语法错误: 因为在 stage 里面不是用

    2024年02月16日
    浏览(48)
  • A Closer Look at Invalid Action Masking in Policy Gradient Algorithms 论文阅读

    原文链接:http://arxiv.org/abs/2006.14171 这篇文章证明了无效动作掩蔽可以看作是在计算动作概率分布时应用状态相关的可微函数来产生行为策略。接下来,设计了实验来比较无效动作掩饰和无效动作惩罚的性能。 无效动作惩罚:这是一种常见的方法,对无效动作给予负奖励,以

    2024年03月14日
    浏览(53)
  • 已解决CondaValueError: Malformed version string ‘~’: invalid character(s)

    已解决Solving environment: failed CondaValueError: Malformed version string ‘~’: invalid character(s) 粉丝群里面的一个小伙伴遇到问题跑来私信我,想用安装torchmetrics,但是发生了报错(当时他心里瞬间凉了一大截,跑来找我求助,然后顺利帮助他解决了,顺便记录一下希望可以帮助到更多遇

    2024年02月05日
    浏览(42)
  • python项目移动解决pycharm中解释器invalid与 Invalid python interpreter selected for the project。

    为项目选择的python解释器无效。   新入职的时候拿过别人的自动化框架借鉴的时候,发现打开代码pycharm中解释器上方报 Invalid python interpreter selected for the project的错误 打开pycharm,点击File — Settings时发现同样有错误  同时之前可以使用的selenium此时也不能使用 步骤1. 步骤2:

    2024年02月08日
    浏览(49)
  • Python报错:SyntaxError: invalid character ‘,‘ (U+FF0C)

    目录 项目场景: 问题描述: 原因分析: 解决方案: 这里简述项目相关背景: 这里描述项目中遇到的问题: 报错: 这句话翻译过来大概是: SyntaxError: invalid(无效的) character(字符) in identifier(标识符) 语法错误:标识符中的存在无效字符。 --------------------------------------------

    2023年04月18日
    浏览(53)
  • 视频融合平台EasyCVR综合管理平台加密机授权报错invalid character是什么原因

    视频融合平台EasyCVR综合管理平台具备视频融合汇聚能力,作为安防视频监控综合管理平台,它支持多协议接入、多格式视频流分发,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等,能对外分发RTS

    2024年02月09日
    浏览(57)
  • conda install出现CondaValueError: Malformed version string invalid character(s)解决方案

      大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。   本文主要介绍了conda install出现Solving environment:failed、

    2023年04月23日
    浏览(67)
  • 已解决java.lang.IllegalArgumentException: Invalid character found in the request target.

    已解决java.lang.IllegalArgumentException: Invalid character found in the request target. 下滑查看解决方法 java.lang.IllegalArgumentException: Invalid character found in the request target. 对于Java.lang.IllegalArgumentException: Invalid character found in the request target的错误,可能是由于URL中包含了非法字符所致。 下滑查看

    2024年02月16日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包