JSONBuddyClassLibrary 1.0.0
See the version list below for details.
dotnet add package JSONBuddyClassLibrary --version 1.0.0
NuGet\Install-Package JSONBuddyClassLibrary -Version 1.0.0
<PackageReference Include="JSONBuddyClassLibrary" Version="1.0.0" />
paket add JSONBuddyClassLibrary --version 1.0.0
#r "nuget: JSONBuddyClassLibrary, 1.0.0"
// Install JSONBuddyClassLibrary as a Cake Addin #addin nuget:?package=JSONBuddyClassLibrary&version=1.0.0 // Install JSONBuddyClassLibrary as a Cake Tool #tool nuget:?package=JSONBuddyClassLibrary&version=1.0.0
JSONBuddyLibrary
JSONBuddyLibrary
Overview
JSONBuddyLibrary
is a .NET wrapper for the jsonvalidator.dll
, a powerful native library for validating, minifying, and prettifying JSON data. This package provides a simple and efficient way to leverage advanced JSON validation capabilities in your .NET applications, including schema validation and customizable validation processes with callbacks.
Features
- JSON Validation: Validate JSON documents against various JSON Schema drafts.
- Minification and Prettification: Easily minify or prettify JSON strings.
- Schema Support: Supports multiple JSON Schema drafts, including Draft04, Draft06, Draft07, Draft201909, and Draft202012.
- Custom Callbacks: Define custom callbacks for document loading and validation reporting.
- License Support: Unlock enhanced functionality with a valid license key.
Installation
You can install the JSONBuddyLibrary
package using any of the following methods:
NuGet Package Manager
PM> Install-Package JSONBuddyLibrary
.NET CLI
dotnet add package JSONBuddyLibrary
PackageReference
Add the following XML node into your project file to reference the package:
<PackageReference Include="JSONBuddyLibrary" Version="1.0.0" />
Usage
Basic JSON Validation
Here's an example of how to use the JSONValidatorWrapper
to validate a JSON document against a schema:
using System;
using System.Runtime.InteropServices;
using JSONBuddyLibrary;
class Program
{
static void Main()
{
// Create a JSON Schema validator instance (using free version)
IntPtr validator = JSONValidatorWrapper.JB_NewJSONSchemaValidator("", "");
// Define your JSON Schema
string jsonSchema = @"
{
""$schema"": ""http://json-schema.org/draft-07/schema#"",
""type"": ""object"",
""properties"": {
""name"": { ""type"": ""string"" },
""age"": { ""type"": ""integer"" }
},
""required"": [""name"", ""age""]
}";
// Set the schema for the validator
bool schemaSet = JSONValidatorWrapper.JB_SetJSONSchemaFromString(validator, jsonSchema, 2); // Draft07
if (schemaSet)
{
// Validate a JSON instance against the schema
string jsonInstance = "{ \"name\": \"John Doe\", \"age\": 30 }";
IntPtr validationResult = JSONValidatorWrapper.JB_ValidateJSONDocument(validator, jsonInstance, null);
string resultString = Marshal.PtrToStringUni(validationResult);
Console.WriteLine($"Validation Result: {resultString}");
// Free the string allocated by the native library
JSONValidatorWrapper.JB_FreeString(validationResult);
}
// Free the validator instance
JSONValidatorWrapper.JB_FreeJSONSchemaValidator(validator);
}
}
Minifying and Prettifying JSON
The JSONValidatorWrapper
also provides methods for minifying and prettifying JSON strings:
using System;
using System.Runtime.InteropServices;
using JSONBuddyLibrary;
class Program
{
static void Main()
{
IntPtr validator = JSONValidatorWrapper.JB_NewJSONSchemaValidator("", "");
string json = "{ \"name\": \"John Doe\", \"age\": 30, \"city\": \"New York\" }";
// Minify JSON
IntPtr minifiedJsonPtr = JSONValidatorWrapper.JB_MinifyJSONText(validator, json);
string minifiedJson = Marshal.PtrToStringUni(minifiedJsonPtr);
Console.WriteLine($"Minified JSON: {minifiedJson}");
JSONValidatorWrapper.JB_FreeString(minifiedJsonPtr);
// Prettify JSON
IntPtr prettifiedJsonPtr = JSONValidatorWrapper.JB_PrettifyJSONText(validator, json);
string prettifiedJson = Marshal.PtrToStringUni(prettifiedJsonPtr);
Console.WriteLine($"Prettified JSON: {prettifiedJson}");
JSONValidatorWrapper.JB_FreeString(prettifiedJsonPtr);
JSONValidatorWrapper.JB_FreeJSONSchemaValidator(validator);
}
}
Advanced Usage with Callbacks
You can define custom callbacks for loading documents and handling validation results:
using System;
using System.Runtime.InteropServices;
using JSONBuddyLibrary;
class Program
{
static void Main()
{
IntPtr validator = JSONValidatorWrapper.JB_NewJSONSchemaValidator("", "");
// Define a document loader callback
JSONValidatorWrapper.LoadDocumentCallback documentLoader = (string path, out IntPtr content, out IntPtr error, long maxFileSize) =>
{
content = IntPtr.Zero;
error = IntPtr.Zero;
// Load your external document here, convert it to UTF-16LE, and assign it to content
// For simplicity, we'll just return false here
return false;
};
// Define a results entry added callback
JSONValidatorWrapper.ResultsEntryAddedCallback resultsCallback = (string jsonPointer, string jsonPointerSchema, string schemaKey, string pathToSchema, bool isValid, long validationStep, string message) =>
{
Console.WriteLine($"Validation Error: {message}");
return true; // Continue validation
};
string jsonInstancePath = "path_to_json_file.json";
bool validationSuccess = JSONValidatorWrapper.JB_ValidateJSONDocumentStream(validator, jsonInstancePath, documentLoader, resultsCallback, null);
Console.WriteLine($"Validation Success: {validationSuccess}");
JSONValidatorWrapper.JB_FreeJSONSchemaValidator(validator);
}
}
Supported Schema Drafts
The following JSON Schema drafts are supported:
- Draft04 (0)
- Draft06 (1)
- Draft07 (2)
- Draft201909 (3)
- Draft202012 (4)
Requirements
Platform: Windows (x64)
.NET Standard 2.0 or higher
Changelog
Version 1.0.0
- Initial release with standard and streaming JSON validation, minification, and prettification functionalities.
License
The JSONBuddyLibrary
wrapper included in this NuGet package is free to use under the MIT license,
allowing developers to easily integrate standard JSON validation and manipulation capabilities into their .NET applications.
However, the underlying jsonvalidator.dll
included in the package contains advanced functionality
that requires a commercial license for full access. Users can utilize basic features without a license, but to unlock enhanced capabilities,
a valid license key must be provided. For more details on the licensing terms, please refer to the license.txt
file included in this package.
Support
For any issues or questions, please contact us at office@xml-buddy.com.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. 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. |
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.