将JSON结构反序列化为对象数组和字典

时间:2017-06-30 11:58:20

标签: c# json

我的情况是我的JSON结构如下:

public class Root
{
    public int next_offset { get; set; }
    public List<Records>  records { get; set; }
}

public class Records
{
    public string key1 { get; set; }
    public string key2 { get; set; }
    public string key3 { get; set; }
}

我希望能够将记录数组作为包含字典的数组进行访问(其中&#34;键值&#34;是键和&#34; val&#34;是值)。 我尝试过使用Dto类来匹配JSON数据但是我没有达到最后一级。

MinMaxScaler

但是因为我需要&#34;键&#34;同样,不仅仅是他们的价值观,这也不是很完美。

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

您是否尝试过json.net库。它提供您正在寻找的内容。您可以将其下载为nuget包。

PS:您可以将JSON粘贴为Visual Studio中的类 enter image description here

答案 1 :(得分:0)

这是你要找的吗? (另请参见.net小提琴:https://dotnetfiddle.net/Q4zyvy

using System;
using System.Collections.Generic;
using Newtonsoft.Json;

public class Root
{
    public int Offset { get; set; }
    public List<Dictionary<string, string>> Records { get; set; }
}

public class Program
{
    public static void Main()
    {
        var asDictionary = JsonConvert.DeserializeObject<Root>(@"{

        offset: 20,
        records:[
            {
                key1: ""value 1"",
                key2: ""value 2"",
                key3: ""value 3""
            },
            {
                key1: ""value 4"",
                key2: ""value 5"",
                key3: ""value 6""
            }           
        ]}");

        Console.WriteLine("Offset: {0}", asDictionary.Offset);
        foreach( var record in asDictionary.Records )
        {
            Console.WriteLine("-----");
            foreach(var pair in record)
            {
                Console.WriteLine("{0} = {1}", pair.Key, pair.Value);
            }
        }
    }
}