【发布时间】:2020-12-24 15:50:55
【问题描述】:
新手。我的第一个项目是比较 NodeJS 代理和 Go 代理的帐号标记化。我已经做了几年 NodeJS 并且对它非常满意。我的代理不会知道来自目标服务器的任何请求或响应的格式。但它确实有来自 Redis/MongoDB 的配置,类似于 JSONPath 表达式。这些配置可以更改目标服务器/路径、查询参数、标头、请求正文和响应正文等内容。
对于 NodeJS,我使用 deepdash 的 paths 函数来获取 JSONPath 格式的 JSON 对象中所有叶子的数组。我正在使用这个数组和 RegEx 从任何请求或响应正文中查找我需要处理的匹配路径。到目前为止,我似乎将使用 gjson 来满足我的 JSONPath 需求,但它没有我在 deepdash 中使用的路径命令的任何内容。
我是否需要创建一个递归函数来自己构建这个 JSONPath 数组,或者是否有人知道会产生类似内容的库?
例如:
{
"response": {
"results": [
{
"acctNum": 1234,
"someData": "something"
},
{
"acctNum": 5678,
"someData": "something2"
}
]
}
}
我会得到一个数组,格式如下:
[
"response.results[0].acctNum",
"response.results[0].someData",
"response.results[1].acctNum",
"response.results[1].someData"
]
然后我可以使用我的过滤器 response.results[*].acctNum 在正则表达式中转换为 response\.results\[.*\]\.acctNum 来获取我的 acctNum 字段。
从这个过滤后的数组中,我应该能够使用 gjson 来获取实际值,对其进行处理然后设置新值(我在 NodeJS 中使用 lodash)
【问题讨论】:
-
这个答案在某种程度上有帮助吗?