比较json对象和javascript的结构
我正在编写一个测试函数postman,以检查json对象是否具有相同的键以及每个键是否具有相同的数据类型 我有3个json对象比较json对象和javascript的结构,javascript,json,postman,Javascript,Json,Postman,我正在编写一个测试函数postman,以检查json对象是否具有相同的键以及每个键是否具有相同的数据类型 我有3个json对象 var test1 = { "abc" : 1, "qwe" : "random", "arrayExample" : [{"var1" : 11, "var2" : 22}, {"var1" : 21314, "var2" : 99}] } var test2 = { "abc" : 3, "qwe" : "Another
var test1 = {
"abc" : 1,
"qwe" : "random",
"arrayExample" : [{"var1" : 11, "var2" : 22}, {"var1" : 21314, "var2" : 99}]
}
var test2 = {
"abc" : 3,
"qwe" : "Another String",
"arrayExample" : [{"var1": 435, "var2": 897}]
}
var test3 = {
"abc" : 46,
"qwe" : "Nothing special",
"arrayExample" : [{"var1": 098, "var9" : "string here"}]
}
我想测试这些键,每个键的值也是相同的类型
例如,如果我的比较函数名为compare,如果对象类型相同,则返回true
function compare(obj1, obj2){
<NEED HELP HERE>
}
及
因为
typeOf( test1["arrayExample"] ) = typeOf( test2["arrayExample"] ) = array of same JSON type
但是
如果您的问题仅涉及比较单个属性值,则可以执行以下操作:
- 确保两个对象具有相同数量的关键点
- 确保相同命名属性的值类型相同
const测试={
4:{a:1,b:AA},
5:{b:“BB”,a:2},
6:{a:3,b:999},
7:{a:4,c:“CC”},
8:{a:5,b:DD,c:999},
9:{a:6,b:EE,c:undefined}
};
常量比较=(obj1,obj2)=>{
让相似=真实;
常量obj1Keys=对象密钥(obj1);
const obj2Keys=Object.keys(obj2);
if(obj1Keys.length!==obj2Keys.length){
相似=错误;
}否则{
obj1Keys.forEach(key=>{
相似=(obj1[键的类型]==obj2[键的类型]);
});
}
回报相似;
};
常量检查=(a,b)=>{
log(`testobjects${a}和${b}相似?${compare(tests[a],tests[b])}`);
};
检查(4,5);
检查(4,6);
检查(4,7);
检查(4,8);
检查(4,9)在JavaScript中,没有字符数组或数字数组。因此,您需要首先定义两个数组是否为“同一类型”的含义。你会考虑什么类型的代码> [ A ],2 ] < /代码>?它是否与[1,“b”]
的类型相同?只需创建函数(声明要检查的规则)并循环您的json对象:)@smarx我的数组将包含json,我假设所有数组中都包含相同的json类型。我将编辑问题alittle@AgentWeirdo如果我理解正确,您只需检查数组的第一个元素,然后检查是否匹配。看起来您已经准备好开始编写代码了!:-)如果您有特定问题需要帮助,请告知我们。
compare(test1, test3) == compare(test2, test3) == false
typeOf( test1["arrayExample"] ) = typeOf( test2["arrayExample"] ) = array of same JSON type
typeOf( test3["arrayExample"]) = array of different json type