我有两个对象,一个是通过读取JSON文件构建的,另一个是从作为url参数传入的查询构造的,类似如下:
<?php
// Remove trailing forward slash
$str = rtrim('http://www.example.com/test/is/best/',"/");
// Simple match characters from back
$exp = preg_match("!/([a-zA-Z0-9]{1,})$!",$str,$match);
// $match[1] gives you: best
if(isset($match[1])) {
// $redirect gives you: best.php
if(is_file($redirect = $match[1].".php")) {
// Include the best.php
include($redirect);
}
}
?>
它确实有JSON数据的子集。例如,通过JSON.parse()解析的JSON数据可能具有如下列表:
boxofficehits.json
q = req.query.query
我的查询对象可能如下所示: var q = {&#34; id&#34;:&#34;&#34; Strawberry swing&#34;};
我正在通过require阅读JSON文件。
[
{
"id": "Strawberry swing",
"artist": "Coldplay",
"release": "19 Jun, 2009",
"other entries": ""
...
},
{
"id": "No sleep",
"artist": "Wiz Khalifa",
"release": "20 April, 2011",
"other entries": ""
...
}
]
我想返回一个如下所示的对象:
var boxofficehits = require('./boxofficehits.json');
除了循环和检查属性的明显方法之外,是否有可用于实现此目的的方法/库?
提前致谢。
答案 0 :(得分:1)
检查同余(https://www.npmjs.com/package/congruence)。它完全符合您的要求:
var template = {
id: 57,
name: 'Travis'
};
var object = {
id: 57,
name: 'Travis',
color: 'blue',
foo: 1
};
// the extra object properties are ignored
assert.isTrue(_.similar(template, object));
您还可以设置模板:
var object = {
a: 3.1415926535,
foo: {
bar: {
b: 'hello world',
c: [ 1, 1, 2, 3, 5, 8 ],
d: new Date()
}
}
};
var matchingTemplate = {
a: 3.1415926535,
foo: _.congruent({
bar: _.congruent({
b: _.isString,
c: _.isArray,
d: _.compose(_.not, _.isFunction)
})
})
};
assert.isTrue(_.congruent(matchingTemplate, object));
答案 1 :(得分:0)