- 起因是上一篇文章写了一个哔哩哔哩自动签到的脚本,之前只是做了一个检测cookie文件是不是超过30天的文件
- 但是我忘记了在上一篇文章实现哔哩哔哩自动签到说过的不能重复登入登出
- 不然cookie会变化,所以我目前的想法是先判断cookie文件是不是超过30天的文件再进行签到请求
- 进行签到成功后获取datatext中的礼物信息,签到失败就获取message的信息,推送信息到我的QQ中
- 因为之前服务器上面我是有用过jq,来获取我自己的接口信息的,于是就准备用jq来解析json
- 不过太久没有写过jq了,都快忘记了
- 就仿造我之前的接口写一个
- 1.png
- 然后就遇到了这个问题
jq: error (at <stdin>:1): Cannot index string with string "text"
- 2.png
- 默认是先判断sign有没有值,如果没有就是签到失败,再获取message的信息,推送信息到我的QQ中
- 看一下我这边定义的解析
'.data[]?.text'
- 3.png
- 哔哩哔哩的接口信息
{ "code":0, "message":"0", "ttl":1, "data":{ "text":"3000点用户经验,2根辣条", "specialText":"", "allDays":31, "hadSignDays":9, "isBonusDay":0 } }
- 其实用data[]也是可以的,并且后面设置了text的信息
- 但是实际在使用时,因为内层data列表数据太大,所以是无法看到上面的text数据
- 用只用一层data[]来获取接口信息,但是里面的数据并没有用[]来定义
- 是整个json数据,结果自然不对
- 修改代码
- 其实使用二次定义数值位置就行
.data.text
- 4.png
- 运行测试
- 5.png
- 发现可以获取到text中的信息了
- 如果想要返回的数据中不带有双引号,则带上参数-r即可
- 6.png
- 它可以把数据作为字符串对待
- 7.png
【jq: error (at <stdin>:1): Cannot index string with string "text"】
开始
完结