风过无痕 发表于 2024-4-16 14:25:01

[已解决]json文件中,key的值含有.特殊符号该怎么处理呢

本帖最后由 风过无痕 于 2024-4-17 19:39 编辑

$Json ='{"A":"1","B":"1","rar":{"a.zip":["a1.html","a2.html"],"b.rar":["b1.php","b2.php"]}}'

$object1 = Json_Decode($Json)

$html = Json_Get($object1 ,'["a.zip"]')

ConsoleWrite($html)如果json中,KEY的值含有.这个特殊符号,比如上面KEY值是a.zip,按照上面的代码去处理,则取不到 a1.html,这种情况需要怎么处理呢?只能使用正则提取了吗?

但是Key中不含有.下面代码可以正常取到 a.html
$Json ='{"A":"1","B":"1","rar":{"azip":["a1.html","a2.html"],"b.rar":["b1.php","b2.php"]}}'

$object1 = Json_Decode($Json)

$html = Json_Get($object1 ,'')

ConsoleWrite($html)

使用此文中的json库,https://www.autoitx.com/thread-71584-1-1.html


绿色风 发表于 2024-4-17 14:02:17

先过滤它不行吗?

风过无痕 发表于 2024-4-17 15:29:23

本帖最后由 风过无痕 于 2024-4-17 20:00 编辑

绿色风 发表于 2024-4-17 14:02
先过滤它不行吗?
想着一步到位,找到方法了,用官方论坛的一个三方的jq库就可以了,有时间我发一下。含有特殊符号的用""括起来当成一个处理就行了。更多详细的用法自己研究下udf。

#include <Constants.au3>
#include "jq.au3"

Local $sOutput = "", $sJson   = ""

_jqInit()

$sJson ='{"A":"1","B":"1","rar":{"a.zip":["a1.html","a2.html"],"b.rar":["b1.php","b2.php"]}}'
$sOutput = _jqExec($sJson, '.rar."a.zip"')
MsgBox($MB_ICONINFORMATION, "List of JSON values", $sOutput)

1007236046 发表于 2024-7-10 19:22:37

''这样不行吗?或者自己在Json_Decode函数里把key里的点号替换成下划线
页: [1]
查看完整版本: [已解决]json文件中,key的值含有.特殊符号该怎么处理呢