gpt4 book ai didi

c# - 如何使用 C# 比较两个 Json 对象

转载 作者:太空狗 更新时间:2023-10-29 22:05:04 33 4
gpt4 key购买 nike

我有两个 Json 对象需要比较如下。我正在使用 Newtonsoft 库进行 Json 解析。

string InstanceExpected = jsonExpected;
string InstanceActual = jsonActual;
var InstanceObjExpected = JObject.Parse(InstanceExpected);
var InstanceObjActual = JObject.Parse(InstanceActual);

而我正在使用 Fluent Assertions 来比较它。但问题是只有当属性计数/名称不匹配时,Fluent 断言才会失败。如果 json 值不同,它会通过。我需要在值不同时失败。

InstanceObjActual.Should().BeEquivalentTo(InstanceObjExpected);

例如,我有实际和预期的 json 进行比较,如下所示。而用上面的比较方式让他们通过是错误的。

{
"Name": "20181004164456",
"objectId": "4ea9b00b-d601-44af-a990-3034af18fdb1%>"
}

{
"Name": "AAAAAAAAAAAA",
"objectId": "4ea9b00b-d601-44af-a990-3034af18fdb1%>"
}

最佳答案

我做了更多的挖掘,并且能够找出为什么 OP 的测试代码没有按预期运行。我能够通过安装和使用 FluentAssertions.Json nuget 包来修复它。

一件重要的事情:

Be sure to include using FluentAssertions.Json otherwise false positives may occur.

测试代码如下:

using FluentAssertions;
using FluentAssertions.Json;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NUnit.Framework;

[TestFixture]
public class JsonTests
{
[Test]
public void JsonObject_ShouldBeEqualAsExpected()
{
JToken expected = JToken.Parse(@"{ ""Name"": ""20181004164456"", ""objectId"": ""4ea9b00b-d601-44af-a990-3034af18fdb1%>"" }");
JToken actual = JToken.Parse(@"{ ""Name"": ""AAAAAAAAAAAA"", ""objectId"": ""4ea9b00b-d601-44af-a990-3034af18fdb1%>"" }");

actual.Should().BeEquivalentTo(expected);
}
}

运行测试:

Unit test results

关于c# - 如何使用 C# 比较两个 Json 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52645603/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com