ServantSoftware.Data.Json 1.0.0.258

dotnet add package ServantSoftware.Data.Json --version 1.0.0.258
NuGet\Install-Package ServantSoftware.Data.Json -Version 1.0.0.258
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ServantSoftware.Data.Json" Version="1.0.0.258" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add ServantSoftware.Data.Json --version 1.0.0.258
#r "nuget: ServantSoftware.Data.Json, 1.0.0.258"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install ServantSoftware.Data.Json as a Cake Addin
#addin nuget:?package=ServantSoftware.Data.Json&version=1.0.0.258

// Install ServantSoftware.Data.Json as a Cake Tool
#tool nuget:?package=ServantSoftware.Data.Json&version=1.0.0.258

JSON ADO.NET Data Provider

Package Name Release (NuGet)
ServantSoftware.Data.Json NuGet

The JSON ADO.NET Data Provider offers a set of classes that facilitate data access to JSON files using the ADO.NET framework. It provides CRUD (Create, Read, Update, Delete) operations to interact with JSON files as if they were a database.

Features

  • ADO.NET compliant provider for JSON files.
  • Support for CRUD operations.
  • Implementation of ADO.NET interfaces for consistency with other data providers.
  • Customizable and extendable to meet specific needs.
  • Comprehensive XML comments to assist with usage.

Getting Started

Prerequisites

  • .NET 7.0 or later.
  • An IDE that supports .NET development, such as Visual Studio.

Installation

You can install the JSON ADO.NET Data Provider from the NuGet package manager or by using the following command in your terminal:

dotnet add package ServantSoftware.Data.Json

Usage

To use the JSON ADO.NET Data Provider, you will need to create a JsonConnection instance, then create a JsonCommand instance, and execute it. Here's an example:

using System.Data.JsonClient;

var connectionString = new FileConnectionString() { DataSource = "path/to/your/file.json" };
using var connection = new JsonConnection(connectionString);
connection.Open();

var commandText = "SELECT * FROM your_table";
using var command = new JsonCommand(commandText, connection);
using var reader = command.ExecuteReader();

while (reader.Read())
{
    // Process data
}

connection.Close();

Connection String

The connection string is used mainly to determine the data source for the provider. The data source can be either a file path to a folder or a JSON file.

Folder As Database

If a path to a folder, then the folder represents the JSON database, and each JSON file in the folder represents a table. The file name then becomes the table's name, and you can expect the data within the file to be a JSON array of objects.

For example:

[  
    { "name": "Joe", "email": "Joe@gmail.com", "salary": 56000, "married": true },  
    { "name": "Bob", "email": "bob32@gmail.com", "salary": 95000 },  
]

In the above example, this table would have 4 columns, one for each unique name/value pair. Note: It is valid that there is not a name/value pair, as is seen for the "married" property in the second object. Internally, this object will be represented as having a "married" property of null.

File As Database

If a path to a JSON file, then the JSON file represents a database. In that case, you can expect the format of the file to be an object containing name/value pairs. Each name/value pair represents a table, and the value of that pair will be a JSON array of objects.

{
  "employees": 
  [  
    { "name": "Joe", "email": "Joe@gmail.com", "salary": 56000, "married": true },  
    { "name": "Bob", "email": "bob32@gmail.com", "salary": 95000 },  
  ],
  "locations":
  [
    { "city": "Houston", "state": "Texas", "zip": 77846 },
    { "city": "New Braunfels", "state": "Texas", "zip": 78132 },
  ]
}

The above example would represent a database containing 2 tables. The first table would be named "employees" containing 4 columns. The second table would be named "locations" and contain 3 columns.

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests.

License

This project is licensed under the MIT License - see the LICENSE.md file for details.

Acknowledgments

  • Thanks to the .NET Foundation for the ADO.NET framework.
  • Thanks to everyone who has contributed to this project.
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  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 is compatible.  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. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on ServantSoftware.Data.Json:

Package Downloads
ServantSoftware.EFCore.Json

Package Description

ServantSoftware.SettingsOnADO.Json

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.0.258 353 4/17/2024
1.0.0.257 97 4/17/2024
1.0.0.256 96 4/17/2024
1.0.0.254 93 4/15/2024
1.0.0.253 83 4/15/2024
1.0.0.252 87 4/14/2024
1.0.0.251 74 4/14/2024
1.0.0.250 86 4/13/2024
1.0.0.249 84 4/13/2024
1.0.0.248 81 4/11/2024
1.0.0.247 80 4/11/2024
1.0.0.246 94 4/1/2024
1.0.0.245 94 4/1/2024
1.0.0.242 104 3/27/2024
1.0.0.241 83 3/27/2024
1.0.0.240 94 3/27/2024
1.0.0.239 74 3/27/2024
1.0.0.238 144 3/16/2024
1.0.0.237 92 3/16/2024
1.0.0.236 112 2/14/2024
1.0.0.235 148 12/20/2023
1.0.0.233 243 10/23/2023
1.0.0.232 102 10/23/2023
1.0.0.231 91 10/23/2023
1.0.0.230 88 10/23/2023
1.0.0.229 90 10/23/2023
1.0.0.228 97 10/22/2023
1.0.0.227 89 10/22/2023
1.0.0.226 100 10/22/2023
1.0.0.225 84 10/22/2023
1.0.0.224 91 10/22/2023
1.0.0.223 97 10/22/2023
1.0.0.222 109 10/22/2023
1.0.0.221 97 10/22/2023
1.0.0.220 94 10/21/2023
1.0.0.219 116 10/21/2023
1.0.0.218 95 10/21/2023
1.0.0.217 96 10/21/2023
1.0.0.216 105 10/21/2023
1.0.0.215 103 10/21/2023
1.0.0.214 99 10/21/2023
1.0.0.213 84 10/21/2023
1.0.0.212 89 10/21/2023
1.0.0.211 89 10/20/2023
1.0.0.210 93 10/20/2023
1.0.0.209 111 10/20/2023
1.0.0.208 103 10/20/2023
1.0.0.207 97 10/20/2023
1.0.0.206 114 10/20/2023
1.0.0.205 96 10/20/2023
1.0.0.204 88 10/19/2023
1.0.0.203 92 10/17/2023
1.0.0.202 231 10/10/2023
1.0.0.201 132 10/7/2023
1.0.0.200 103 10/3/2023
1.0.0.199 112 10/2/2023
1.0.0.198 101 10/2/2023
1.0.0.195 127 9/27/2023
1.0.0.194 104 9/27/2023
1.0.0.193 100 9/27/2023
1.0.0.192 105 9/27/2023
1.0.0.191 118 9/26/2023
1.0.0.189 166 9/22/2023
1.0.0.188 105 9/22/2023
1.0.0.187 101 9/22/2023
1.0.0.186 101 9/19/2023
1.0.0.185 202 9/18/2023
1.0.0.184 98 9/17/2023
1.0.0.183 99 9/17/2023
1.0.0.182 93 9/16/2023
1.0.0.181 112 9/15/2023
1.0.0.179 137 9/14/2023
1.0.0.178 119 9/14/2023
1.0.0.176 113 9/13/2023
1.0.0.175 112 9/9/2023
1.0.0.174 130 9/8/2023
1.0.0.173 115 9/1/2023
1.0.0.172 129 9/1/2023
1.0.0.171 119 8/31/2023
1.0.0.170 142 8/25/2023
1.0.0.169 115 8/24/2023