如何应用 jsonpath 查询来获取对象?
How to apply jsonpath query to get the object?
详细问题是,我有一个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"
}
}
所以从这里我想使用 jsonpath query
从 config.json
文件中获取 result
密钥,其中提到了我想要处理的对象 obj
在 app.js
而我正在寻找的输出是
{
"key1" : "val1",
"key2" : "val2"
}
我不想通过对每个键单独查询来获取这个对象,比如获取 key1 我可以这样写 result['key1'] = fire.query(obj, '$.key1')
相反,我想在单行中查询以获得完整的结果对象。
这是我目前尝试过的方法。
你有一个配置,它有很多键,每个键都有一个值,代表对象内部值的路径。因此,您需要做的第一件事是遍历结果配置对象中的每个 key/value 对。对于每一个,您都需要使用该对的值调用 jsonpath 函数。我假设这对键将代表结果中的键,结果的值将是什么 jsonpath returns.
// 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))
详细问题是,我有一个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"
}
}
所以从这里我想使用 jsonpath query
从 config.json
文件中获取 result
密钥,其中提到了我想要处理的对象 obj
在 app.js
而我正在寻找的输出是
{
"key1" : "val1",
"key2" : "val2"
}
我不想通过对每个键单独查询来获取这个对象,比如获取 key1 我可以这样写 result['key1'] = fire.query(obj, '$.key1')
相反,我想在单行中查询以获得完整的结果对象。
这是我目前尝试过的方法。
你有一个配置,它有很多键,每个键都有一个值,代表对象内部值的路径。因此,您需要做的第一件事是遍历结果配置对象中的每个 key/value 对。对于每一个,您都需要使用该对的值调用 jsonpath 函数。我假设这对键将代表结果中的键,结果的值将是什么 jsonpath returns.
// 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))