是否有一个JS库可以告诉我集合中每个属性的类型?
我有一个对象数组,这是SQL数据库查询的结果。
数据如下所示:
[{
id: "1",
email: "[email protected]",
is_subscribed: null,
name: "Don P",
created_at: "2015-01-18 18:16:32"
},
{
id: "2",
email: "[email protected]",
is_subsribed: "t",
name: "Test Guy",
created_at: "2015-01-30 12:05:55"
},
...]
我想要一个可以告诉我每个“列”类型的对象。像这样的东西:
{
id: "integer",
email: "string",
is_subscribed: "boolean",
name: "string",
created_at: "datetime"
}
编辑:这不像做类型检查那样简单。我在这里遇到的主要问题是,除空值外,所有值都是字符串。这意味着我必须尝试将整个列转换为类型,然后检查该类型是否为整数。对我要检查的每种类型重复此操作。因此,我将拥有(要测试的类型数量)X(对象数量)X(列数量),这要进行大量计算,因此,如果有一些更聪明的方法,我想这样做。
编辑2:如果您对问题不满意,请发表评论以解释原因,以便作者可以改善问题。即使某些东西对您来说很明显,但可能对作者而言却不是(在这种情况下……我:P)。
这是使用JSON.parse
和typeof
识别类型的快速示例:
var o={
id: "1",
email: "[email protected]",
is_subscribed: null,
name: "Don P",
created_at: "2015-01-18 18:16:32"
};
for(var it in o){ var v=o[it];
try{v=JSON.parse(v);}catch(y){} //try to turn strings into literals
if(!+v && Date.parse(v)){ v="date"; }else{ v=typeof v;} // find date strings (json encoded), not numbers
if(v=="object" && Array.isArray(o[it])) v="array"; // [] vs {}
if(v=="object" && !o[it]) v="null"; // null is and Object (doh!)
o[it]=v;
}
o;/* ~== {
"id": "number",
"email": "string",
"is_subscribed": "null",
"name": "string",
"created_at": "date"
};*/
它与示例输出非常接近,但是使用了JS类型而不是SQL类型,而JS实际上无法从JSON中确定SQL类型,因为JSON会产生int
模棱两可的特定数字类型。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句