如何应用jsonpath查询获取对象?

时间:2020-04-28 13:23:20

标签: node.js jsonpath

详细的问题是,我有一个节点js代码“ app.js”


var fire = require('jsonpath')
let Config = JSON.parse(fs.readFileSync('./config.json', 'utf-8'))

var obj = {
    "key1" : "val1",
    "key2" : "val2",
    "key3" : "val3",
    "key4" : "val4",
    "key5" : "val5"
}

console.log(fire.query(obj, ?))

和一个config.json文件

{
    "result" : {
        "key1" : "$.key1",
        "key2" : "$.key2"
    }
}

因此,我想使用resultconfig.json文件中提取jsonpath query密钥,其中我要处理的对象是{ {1}}

我正在寻找的输出是

obj

我不想通过为每个键使用单独的查询来获取该对象,就像要获取key1一样,我可以写app.js

相反,我想单行查询以获取完整的结果对象。

这是我到目前为止尝试过的。

1 个答案:

答案 0 :(得分:0)

您有一个配置,其中包含许多键,并且每个键都有一个值,该值表示对象内部值的路径。因此,您需要做的第一件事是遍历结果配置对象中的每个键/值对。对于每一个,您都需要使用该对中的值调用jsonpath函数。我假设这对键将代表结果中的键,结果的值将是jsonpath返回的值。

// Given 'obj' and 'Config' exist...
const result = Object.entries(Config.result)
  .reduce((resultObj, [key, value]) => (
    { ...resultObj, [key]: fire.query(obj, value) }
  ), {})

console.log(JSON.stringify(result, undefined, 2))