CSharp · Console
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization.Formatters;
using System.IO;
using System.Data;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using System.Reflection;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
using NUnit.Framework;
//https://stackoverflow.com/questions/52303222/deserialize-nested-json-into-c-sharp-class
public class Info
{
public string prop1 {get;set;}
public string prop2 {get;set;}
public int prop3 {get;set;}
// Modified from
//public Dictionary<string, List<int>> prop4 {get;set}
public List<Dictionary<string, int>> prop4 {get;set;}
}
public class Response
{
// Modified from
//public class Dictionary<string, List<Info>> Item {get;set;}
public Dictionary<string, Info> Items {get;set;}
}
class TestClass
{
public static void Test()
{
var json = GetJson();
var root = JsonConvert.DeserializeObject<Response>(json);
var json2 = JsonConvert.SerializeObject(root, Formatting.Indented, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
Console.WriteLine("Deserialized and re-serialized {0}:", root);
Console.WriteLine(json2);
}
static string GetJson()
{
var json = @"{
""Items"": {
""Item_1A"": {
""prop1"": ""string"",
""prop2"": ""string"",
""prop3"": 1,
""prop4"": [{
""prop_x"": 100
},
{
""prop_y"": 200
}]
},
""Item2B"": {
""prop1"": ""string"",
""prop2"": ""string"",
""prop3"": 14,
""prop4"": [{
""prop_z"": 300
}]
}
}
}";
return json;
}
}
public class Program
{
public static void Main()
{
Console.WriteLine("Environment version: " + Environment.Version);
Console.WriteLine("Json.NET version: " + typeof(JsonSerializer).Assembly.FullName);
Console.WriteLine();
try
{
TestClass.Test();
}
catch (Exception ex)
{
Console.WriteLine("Failed with unhandled exception: ");
Console.WriteLine(ex);
throw;
}
}
}