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

问题描述 投票:0回答:1

详细的问题是,我有一个node 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"
    }
}

所以我想从这里获取 result 钥匙 config.json 文件,使用 jsonpath query 其中我想研究的对象是 obj 中提到 app.js

而我要找的输出是

{
    "key1" : "val1",
    "key2" : "val2"
}

我不想通过对每个键进行单独的查询来获取这个对象,比如要获取key1,我可以写道 result['key1'] = fire.query(obj, '$.key1')

而我想单行查询,以获得完整的结果对象。

这是我目前尝试的方法。

node.js jsonpath
1个回答
0
投票

你有一个config,它有很多键,而每个键都有一个值,它代表了一个对象内部的一个值的路径。 因此,你需要做的第一件事是迭代结果config对象中的每一个key-value对。 对于每一个,你需要使用该对处的值调用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))
© www.soinside.com 2019 - 2024. All rights reserved.