NFluent.Json
2.2.0
dotnet add package NFluent.Json --version 2.2.0
NuGet\Install-Package NFluent.Json -Version 2.2.0
<PackageReference Include="NFluent.Json" Version="2.2.0" />
<PackageVersion Include="NFluent.Json" Version="2.2.0" />
<PackageReference Include="NFluent.Json" />
paket add NFluent.Json --version 2.2.0
#r "nuget: NFluent.Json, 2.2.0"
#:package NFluent.Json@2.2.0
#addin nuget:?package=NFluent.Json&version=2.2.0
#tool nuget:?package=NFluent.Json&version=2.2.0
NFluent.Json
NFluent Extensions for JsonElement.
Check a JsonElement value
Check.That(jsonElement1).HasNullValue();
Check.That(jsonElement2).HasStringValue("foo");
Check.That(jsonElement2).HasStringValue("Foo", StringComparison.OrdinalIgnoreCase);
Check.That(jsonElement3).HasIntValue(42);
Check.That(jsonElement4).HasLongValue(2147483648);
Check.That(jsonElement5).HasBoolValue(true);
Check.That(jsonElement6).IsTrue();
Check.That(jsonElement7).IsFalse();
Check.That(jsonElement7).HasGuidValue(expectedGuid);
Check.That(jsonElement9).HasArrayValue(new[]{1, 2});
Check.That(jsonElement10).HasArrayValueEquivalentTo(new[]{2, 1});
Check.That(jsonElement11).HasSize(3); // works for string and array elements
Check.That(jsonElement12).IsEmpty; // works for string and array elements
Check the presence of a property
Check.That(jsonElement).HasProperty("foo");
Check the presence and kind of a property
Check.That(jsonElement).HasProperty("foo", JsonValueKind.String);
Check the presence and value of a property
Check.That(jsonElement).HasStringProperty("stringProperty", "value");
Check.That(jsonElement).HasStringProperty("stringProperty", "Value", StringComparison.OrdinalIgnoreCase);
Check.That(jsonElement).HasBoolProperty("boolProperty", expectedValue: true);
Check.That(jsonElement).HasIntProperty("intProperty", 42);
Check.That(jsonElement).HasLongProperty("longProperty", 2147483648);
Check.That(jsonElement).HasNullProperty("nullProperty");
Check.That(jsonElement).HasGuidProperty("guidProperty", expectedGuid);
Check.That(jsonElement).HasArrayProperty("arrayProperty", new[] { 1, 2 });
Check.That(jsonElement).HasArrayPropertyEquivalentTo("arrayProperty", new[] { 2, 1 });
Check the size of a property
Check.That(jsonElement).HasProperty("arrayProperty").HasSize(4);
Check.That(jsonElement).HasProperty("otherArrayProperty").IsEmpty;
Check.That(jsonElement).HasProperty("stringProperty").HasSize(2);
Check.That(jsonElement).HasProperty("otherStringProperty").IsEmpty;
Check element(s) presence using JSON path
Check.That(jsonElement).HasSingleElementAt("$.foo.bar");
Check.That(jsonElement).HasAtleastOneElementAt("$.foo.array[*]");
Check.That(jsonElement).HasMultipleElementsAt("$.foo.otherArray[*]");
Check.That(jsonElement).HasElementsCountAt("$.foo.thirdArray[*]", 4);
Note that it supports simplified expressions making the
$and$.suffixes optional. For example, the following expressions are equivalent:
$.foo.barcan be written as.foo.barorfoo.bar$[0].foocan be written as[0].foo
Utility methods
Find JsonElement inner element with JSON path
The JsonElement extension methods GetElementAt and GetRequiredElementAt allow you to retrieve a specific inner element using a JSON path expression.
var foo = jsonElement.GetElementAt("$.foo"); // foo can be null if no element is found
var bar = jsonElement.GetRequiredElementAt("$.bar"); // bar cannot be null (throws if no element is found)
Note that it supports simplified expressions making the
$and$.suffixes optional. For example, the following expressions are equivalent:
$.foo.barcan be written as.foo.barorfoo.bar$[0].foocan be written as[0].foo
Read JsonElement from HttpContent
The ReadJsonRootElementAsync extension method allows you to read a JsonElement from a HttpContent object.
var requestJson = await httpRequestMessage.Content.ReadJsonRootElementAsync();
Check.That(requestJson).HasIntProperty("foo", 42);
var responseJson = await httpResponseMessage.Content.ReadJsonElementAsync();
Check.That(responseJson).HasArrayValueEquivalentTo(new []{ 1, 2, 3 });
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net6.0
- JsonPath.Net (>= 2.1.1)
- NFluent (>= 3.0.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.