C# 包括JSON对象的FluentAssertions对象图比较

C# 包括JSON对象的FluentAssertions对象图比较,c#,json,.net,unit-testing,fluent-assertions,C#,Json,.net,Unit Testing,Fluent Assertions,我有一个简单的类,它的属性类型为object,可以包含从不同来源构建的JSON public class SimpleClass { public string Id { get; set; } public object JSONData { get; set; } } 我正在使用FluentAssertions对象图比较,但这不起作用 private void Verify(SimpleClass actualOutput, SimpleClass expectedOutp

我有一个简单的类,它的属性类型为object,可以包含从不同来源构建的JSON

public class SimpleClass
{
    public string Id { get; set; }
    public object JSONData { get; set; }
}
我正在使用FluentAssertions对象图比较,但这不起作用

private void Verify(SimpleClass actualOutput, SimpleClass expectedOutput)
{
    actualOutput.Should().BeEquivalentTo(expectedOutput);
}
根据对象的来源,我看到的消息如下

Expected member JSONData to be a 
System.Collections.Generic.IDictionary`2[System.String,Newtonsoft.Json.Linq.JToken], but found a 
System.Text.Json.JsonElement.

Expected member JSONData to be 
System.String, but found 
System.Text.Json.JsonElement.
当我将对象转换为字符串时,它们是相等的

private void Verify(SimpleClass actualOutput, SimpleClass expectedOutput)
{
    actualOutput.JSONData.ToString().Should().Be(expectedOutput.JSONData.ToString());
}
我不想这样比较单个属性,因为我需要比较SimpleClass实例的集合。有没有办法通过对象图比较来实现这一点?我可以将FluentAssertions配置为在比较期间进行字符串转换吗?

[事实]
公营机构
{
var jsonText=@”{
“元素1”:123,
“元素2”:“文本”
}";
var x1=newsimpleclass{Id=“X”,JSONData=jsonText};
var x2=new SimpleClass{Id=“X”,JSONData=jsoninvert.DeserializeObject(x1.JSONData.ToString())};
x1.Should().beequivalento(
x2,
o=>o.Using(ctx=>ctx.Subject.ToString().Should().Be(ctx.Expectation.ToString())。当(
info=>info.SelectedMemberPath.EndsWith(nameof(SimpleClass.JSONData));
}

您尝试过什么?什么不起作用?您的序列化程序不匹配
Newtonsoft.Json
System.Text.Json
。无论如何,为了正确处理这种情况,将所有JSON反序列化为强类型值并比较结果