这是返回结果 {"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.
请问下json路径名中含有.或其他特殊符号时怎么提取,比如以下,路径名是变量,可能含有符号
路径:result[0].fields.,./\`.value
内容:{"result":[{"noteId":1749114202623,"profile":"测试账户2","tags":["\"\"\"\"\"\"","asg`1""}、/"],"fields":{",./\\`":{"value":"为什么小时饿了","order":0},"<<>?|\\/*/-+`!":{"value":"2】ffffffff <img src=\"1749143037857.gif\">","order":1}},"modelName":"<<<<||?<>?/\\","mod":1749114562,"cards":[1749114202623]}],"error":null}
此外我还遇到一个问题,当多字段表单下拉选项列表作为一个变量时,可能包含|符号,导致被视为值的分隔符,然后我改成了带筛选的文本框。这种情况有什么办法吗
感谢指点,关于json提取,我使用的确实是单引号,路径如下
$.result[0].fields.['{filename1}'].value
$.result[0].fields['{filename1}'].value
我不知道[前是否应带. 两个都试了,结果都是如下
实际替换变量后$.result[0].fields.[',../\'].value
应该由于 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;