【发布时间】:2013-04-21 20:14:51
【问题描述】:
我有一个尚未设置结构的 JSON 文件;它可能会变得复杂。 我想跟踪函数认为数据结构是什么。
有哪些标准/智能方法可以表明您的函数已连接到某个数据结构?
现在,我在 json 文件中使用 _comment 来保留版本号,然后将该版本名称作为 每个函数中的注释 使用它。下面的完整示例。
travel.json
{
"_comment" : "version 1.0"
, "name" : "Tom Sawyer"
, "travel" : [{
"id" : "1"
, "location" : "San Francisco"
}, {
"id" : "2"
, "location" : "London"
}]
}
要解析的两个函数:travel.json
fs = require('fs');
function get_json() {
var file = __dirname + '/travel.json';
data = fs.readFileSync(file, 'utf8');
var json_obj = JSON.parse(data);
return(json_obj);
};
function get_location(json_obj) {
// "version 1.0"
var new_obj = {};
json_obj.content.forEach(function(item) {
new_obj[item.id] = item.location;
});
return ( new_obj );
};
// Run
console.log('Locations: ', get_location( get_json() ));
谢谢。
【问题讨论】:
-
你能解释一下你为什么这样做吗?它看起来有点像防御性编程。如果您正在创建其他人将依赖的 API,您可以版本化 API 的 url 而不是 JSON。类似于 yoururl/api/1/locations、yoururl/api/2/locations 等
-
我正在学习,所以一切都感觉有点防御性。;我喜欢你的建议!它更优雅,更易于管理。没有散落在各处的小注释行。
-
防御性编程和过早优化是魔鬼。
-
是的,是的。据我所知。任何关于如何不成为防御性程序员的示例的好读物 - 博客文章?
-
@Pickels 你能把你在第一个陈述中写的东西写成答案吗?我会接受它,所以问题有一个正式的绿色复选标记。