Table of Contents
Deserializing Child Objects with Dynamic Key Names
Introduction
Problem Statement
Solution
Demo
Output
Home Backend Development C++ How can I deserialize JSON with dynamic key names in C#?

How can I deserialize JSON with dynamic key names in C#?

Jan 07, 2025 pm 12:41 PM

How can I deserialize JSON with dynamic key names in C#?

Deserializing Child Objects with Dynamic Key Names

Introduction

Serializing JSON data with varying key names poses a challenge in deserialization. This article explores a solution using a dynamic property pattern in C#.

Problem Statement

Considering the JSON data below, how can we deserialize it while maintaining the dynamic "numeric" keys?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

{

    "users" : {

        "100034" : {

            "name"  : "tom",

            "state" : "WA",

            "id"    : "cedf-c56f-18a4-4b1"

        },

        "10045" : {

            "name"  : "steve",

            "state" : "NY",

            "id"    : "ebb2-92bf-3062-7774"

        },

        "12345" : {

            "name"  : "mike",

            "state" : "MA",

            "id"    : "fb60-b34f-6dc8-aaf7"

        }

    }

}

Copy after login

Solution

Dynamic Property Pattern

We can represent the varying keys using a Dictionary<string, T> where T is a class containing the child object data. In this case, we declare the following classes:

1

2

3

4

5

6

7

8

9

10

11

class RootObject

{

    public Dictionary&lt;string, User&gt; users { get; set; }

}

 

class User

{

    public string name { get; set; }

    public string state { get; set; }

    public string id { get; set; }

}

Copy after login

Deserialization

To deserialize the JSON using the dynamic property pattern, we use the following code:

1

RootObject obj = JsonConvert.DeserializeObject&lt;RootObject&gt;(json);

Copy after login

This creates an instance of RootObject, with a Dictionary<string, User> property named users populated with the deserialized child objects.

Accessing Object Data

Now, we can access each child object using their respective keys by iterating over the users dictionary:

1

2

3

4

5

foreach (string key in root.users.Keys)

{

    User user = root.users[key];

    // Access user properties using user.name, user.state, user.id

}

Copy after login

Demo

The following C# code demonstrates the entire process:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

class Program

{

    static void Main(string[] args)

    {

        string json = @"

        {

            ""users"": {

                ""10045"": {

                    ""name"": ""steve"",

                    ""state"": ""NY"",

                    ""id"": ""ebb2-92bf-3062-7774""

                },

                ""12345"": {

                    ""name"": ""mike"",

                    ""state"": ""MA"",

                    ""id"": ""fb60-b34f-6dc8-aaf7""

                },

                ""100034"": {

                    ""name"": ""tom"",

                    ""state"": ""WA"",

                    ""id"": ""cedf-c56f-18a4-4b1""

                }

            }

        }";

 

        RootObject root = JsonConvert.DeserializeObject&lt;RootObject&gt;(json);

 

        // Iterate over users and print their data

        foreach (string key in root.users.Keys)

        {

            User user = root.users[key];

            Console.WriteLine("key: " + key);

            Console.WriteLine("name: " + user.name);

            Console.WriteLine("state: " + user.state);

            Console.WriteLine("id: " + user.id);

            Console.WriteLine();

        }

    }

}

Copy after login

Output

1

2

3

4

5

6

7

8

9

10

11

12

13

14

key: 10045

name: steve

state: NY

id: ebb2-92bf-3062-7774

 

key: 12345

name: mike

state: MA

id: fb60-b34f-6dc8-aaf7

 

key: 100034

name: tom

state: WA

id: cedf-c56f-18a4-4b1

Copy after login

The above is the detailed content of How can I deserialize JSON with dynamic key names in C#?. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

What are the types of values ​​returned by c language functions? What determines the return value? What are the types of values ​​returned by c language functions? What determines the return value? Mar 03, 2025 pm 05:52 PM

What are the types of values ​​returned by c language functions? What determines the return value?

Gulc: C library built from scratch Gulc: C library built from scratch Mar 03, 2025 pm 05:46 PM

Gulc: C library built from scratch

C language function format letter case conversion steps C language function format letter case conversion steps Mar 03, 2025 pm 05:53 PM

C language function format letter case conversion steps

What are the definitions and calling rules of c language functions and what are the What are the definitions and calling rules of c language functions and what are the Mar 03, 2025 pm 05:53 PM

What are the definitions and calling rules of c language functions and what are the

Where is the return value of the c language function stored in memory? Where is the return value of the c language function stored in memory? Mar 03, 2025 pm 05:51 PM

Where is the return value of the c language function stored in memory?

distinct usage and phrase sharing distinct usage and phrase sharing Mar 03, 2025 pm 05:51 PM

distinct usage and phrase sharing

How do I use algorithms from the STL (sort, find, transform, etc.) efficiently? How do I use algorithms from the STL (sort, find, transform, etc.) efficiently? Mar 12, 2025 pm 04:52 PM

How do I use algorithms from the STL (sort, find, transform, etc.) efficiently?

How does the C   Standard Template Library (STL) work? How does the C Standard Template Library (STL) work? Mar 12, 2025 pm 04:50 PM

How does the C Standard Template Library (STL) work?

See all articles