我看不出你如何比较两个DynamicJsobObjects。方法GetDynamicMemberNames
告诉您每个属性有哪些属性,但是如何访问这些属性的值?
我已经到达了这个函数的存根,但不知道如何检查对象是否相同。它源于测试两个json字符串。一个是来自Web API的响应,而另一个是预期的结果。我使用Json.Decode(expectedJsonString)
和Json.Decode(resultJsonString)
构建了对象。
功能存根:
public static bool AreJsonObjectsEqual(DynamicJsonObject obj1, DynamicJsonObject obj2)
{
return // ?
}
如何比较两个对象以确保它们相等?
答案 0 :(得分:2)
您可以尝试这样的事情
public static bool AreJsonObjectsEqual(DynamicJsonObject obj1, DynamicJsonObject obj2)
{
var memberNamesNotEqual = obj1.GetDynamicMemberNames().Except(obj2.GetDynamicMemberNames()).Any();
if (!memberNamesNotEqual)
{
dynamic dObj1 = (dynamic)obj1;
dynamic dObj2 = (dynamic)obj2;
foreach (var memberName in obj1.GetDynamicMemberNames()){
if(dObj1[memberName] != dObj2[memberName]) return false
}
return true
}
return memberNamesNotEqual;
}