json提取模块提取不到,这个我的路径不对吗

使用问题 · 1033 次浏览
墨尹琳 创建于 2天1小时前

这是返回结果   {"result": null, "error": null}

我填写路径为  result   和  error

提取内容就是空的,我在这个网站试了下结果是对的啊   https://www.jsonpath.cn/,还是说json提取会把返回的null视为空?

更新: 路径名有符号提取失败

路径:$.result[0].fields[',../\'].value

内容:{"result": [{"noteId": 1749126108054, "profile": "\u6d4b\u8bd5\u7a7a\u767d\u8d26\u6237", "tags": [], "fields": {",../\\": {"value": "the erosion of human", "order": 0}, "\\/": {"value": "", "order": 1}}, "modelName": "\u7279\u6b8a\u7b26\u53f7\u5b57\u6bb5", "mod": 1749126108, "cards": [1749126108054]}], "error": null}

错误提示: 原因:JSON提取 $.result[0].fields.[',../\'].value 失败。Path ended with an open string.

调试文件

墨尹琳 最后更新于 2025/6/5

回复内容
CL 1天16小时前
#1

null 就是空。

墨尹琳 回复 CL 1天6小时前 :

请问下json路径名中含有.或其他特殊符号时怎么提取,比如以下,路径名是变量,可能含有符号

路径:result[0].fields.,./\`.value 

内容:{"result":[{"noteId":1749114202623,"profile":"测试账户2","tags":["\"\"\"\"\"\"","asg`1""}、/"],"fields":{",./\\`":{"value":"为什么小时饿了","order":0},"<<>?|\\/*/-+`!":{"value":"2】ffffffff&nbsp;&nbsp;&nbsp;&nbsp;<img src=\"1749143037857.gif\">","order":1}},"modelName":"<<<<||?<>?/\\","mod":1749114562,"cards":[1749114202623]}],"error":null}

此外我还遇到一个问题,当多字段表单下拉选项列表作为一个变量时,可能包含|符号,导致被视为值的分隔符,然后我改成了带筛选的文本框。这种情况有什么办法吗

墨尹琳 最后更新于 1天6小时前
巴贝奇 回复 墨尹琳 1天5小时前 :

json路径名中含有.或其他特殊符号可以使用这种语法:$['path']


墨尹琳 回复 巴贝奇 1天5小时前 :

在测试网站中可以,但是在quicker的json提取模块中就提示会失败😭

巴贝奇 回复 墨尹琳 1天4小时前 :

试了下,Quicker可以正常提取啊,你是不是用的双引号,双引号确实不行,单引号是可以的

巴贝奇 回复 墨尹琳 1天4小时前 :

第2个问题【当多字段表单下拉选项列表作为一个变量时,可能包含|符号,导致被视为值的分隔符】,可以自定义分隔符,语法参考【文本替换】



巴贝奇 最后更新于 1天4小时前
墨尹琳 回复 巴贝奇 1天3小时前 :

感谢指点,关于json提取,我使用的确实是单引号,路径如下
$.result[0].fields.['{filename1}'].value
$.result[0].fields['{filename1}'].value
我不知道[前是否应带. 两个都试了,结果都是如下

实际替换变量后$.result[0].fields.[',../\'].value

步骤(sys:jsonExtract)执行失败,原因:JSON提取 $.result[0].fields.[',../\'].value 失败。Path ended with an open string.

内容:
{"result": [{"noteId": 1749126108054, "profile": "\u6d4b\u8bd5\u7a7a\u767d\u8d26\u6237", "tags": [], "fields": {",../\\": {"value": "the&nbsp;erosion&nbsp;of&nbsp;human", "order": 0}, "\\/": {"value": "", "order": 1}}, "modelName": "\u7279\u6b8a\u7b26\u53f7\u5b57\u6bb5", "mod": 1749126108, "cards": [1749126108054]}], "error": null}
墨尹琳 最后更新于 1天3小时前
CL 回复 墨尹琳 1天3小时前 :

{filename1}是变量名的话,要在最前面加$$开启插值。

墨尹琳 回复 CL 1天2小时前 :

加过的,我前边示意没带上,后边发的是调试时变量过的内容
$.result[0].fields.[',../\'].value

巴贝奇 回复 墨尹琳 1天2小时前 :

应该由于 filename1 中包含的 \ 没有转义导致的,我试了转义处理后就可以了,建议统一用中括号加引号的语法,这样看着也规整些


代码========>

$=//构建JSONPath
string filename1Tmp = {filename1};

//序列化实现转义
filename1Tmp = JsonConvert.SerializeObject(filename1Tmp);

//删除首尾的双引号
filename1Tmp = Regex.Replace(filename1Tmp, @"^""", "");
filename1Tmp = Regex.Replace(filename1Tmp, @"""$", "");

string jsonPath = $"$['result'][0]['fields']['{filename1Tmp}']['value']";

return jsonPath;

巴贝奇 最后更新于 1天2小时前
巴贝奇 回复 墨尹琳 1天2小时前 :

写了个临时动作【JSONPath提取】,代码放里面了,可以参考下


巴贝奇 最后更新于 1天2小时前
墨尹琳 回复 巴贝奇 1天2小时前 :
非常感谢,完美解决。我不懂编程这个动作来回请求提取json各种报错折磨死我了😭
巴贝奇 回复 墨尹琳 1天2小时前 :

我是做Java的,也不是专门搞C#的,也是靠着DeepSeek慢慢摸索上手了😁

墨尹琳 回复 巴贝奇 1天1小时前 :

大佬厉害,我是药学生,完全不懂这些东西,一直想学点python但连本专业的知识都搞不定🫡

巴贝奇 回复 墨尹琳 1天1小时前 :

学医确实苦,我表妹就比我低了一届,我工作三四年了,她现在还在规培呢😅

墨尹琳 回复 巴贝奇 1天1小时前 :

🤣

巴贝奇 1天2小时前
#2

有Bug啊,当前网页的版面全乱了🤣

回复主贴