DeserializeDictionarySOJson

CSharp · Console

/Program.cs

// https://stackoverflow.com/questions/60089463/query-or-deserialize-json-with-dynamic-keys-using-system-text-json
using System;
using System.Collections.Generic;
using System.Text.Json;

public class Program
{
	public static void Main()
	{
		var json = @"{
				   ""key1"": ""Hello"",
				   ""key2"": {
					  ""items"": {
						 ""123"": {
							""pageid"": 123,
							""name"": ""data""
						 },
						 ""234"": {
							""pageid"": 234,
							""name"": ""Something""
						 }
					  }
					}
				 }";		
		
		var data = JsonSerializer.Deserialize<Root>(json);
		
		Console.WriteLine("pageid: " + data.key2.items["123"].pageid);
		Console.WriteLine("name: " + data.key2.items["123"].name);
		Console.WriteLine("pageid: " + data.key2.items["234"].pageid);
		Console.WriteLine("name: " + data.key2.items["234"].name);
		
		foreach (var key in data.key2.items.Keys) {
		    Console.WriteLine($"{key} {data.key2.items[key].name}"); // {items["key"].name}");
		}
	}	
}

public class ItemProps
{
    public int pageid { get; set; }
    public string name { get; set; }
}

public class Item
{
    public Dictionary<string, ItemProps> items { get; set; }
}

public class Root
{
    public string key1 { get; set; }
    public Item key2 { get; set; }
}
;