如何比较两个Dynamic JsonObject以检查它们是否相等?

时间:2014-02-04 11:59:55

标签: c# json

我看不出你如何比较两个DynamicJsobObjects。方法GetDynamicMemberNames告诉您每个属性有哪些属性,但是如何访问这些属性的值?

我已经到达了这个函数的存根,但不知道如何检查对象是否相同。它源于测试两个json字符串。一个是来自Web API的响应,而另一个是预期的结果。我使用Json.Decode(expectedJsonString)Json.Decode(resultJsonString)构建了对象。

功能存根:

public static bool AreJsonObjectsEqual(DynamicJsonObject obj1, DynamicJsonObject obj2)
{
        return // ?
}

如何比较两个对象以确保它们相等?

1 个答案:

答案 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;
}