using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization.Formatters;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
public static void Test()
var jsonObject = new JObject();
var userDetails = new JObject();
jsonObject["UserDetails"] = userDetails;
userDetails["UserID"] = "123456789";
userDetails["FirstName"] = "Test1";
userDetails["Surname"] = "Test2";
userDetails["Children1.Active1"] = false;
userDetails["Children1.Active2"] = false;
Console.WriteLine(jsonObject);
Assert.IsTrue(JToken.DeepEquals(jsonObject, JToken.Parse(GetRequiredJSON())));
Console.WriteLine("Generated and required JSON are identical.");
static string GetRequiredJSON()
var json = @"{ ""UserDetails"": {
""FirstName"": ""Test1"",
""UserID"": ""123456789"",
""Children1.Active1"": false,
""Children1.Active2"": false
public static void Main()
Console.WriteLine("Environment version: " + Environment.Version);
Console.WriteLine("Json.NET version: " + typeof(JsonSerializer).Assembly.FullName);
Console.WriteLine("Failed with unhandled exception: ");