使用JSON.NET在C#中反序列化此JSON

时间:2016-06-18 18:47:58

标签: c# json json.net

说我有以下JSON文档:

{
    "table": [
        {
            "wiki": "http://en.wikipedia.org/wiki/Period%201%20element",
            "elements": [
                {
                    "group": "",
                    "position": 0,
                    "name": "Hydrogen",
                    "number": 1,
                    "small": "H",
                    "molar": 1.00794,
                    "electrons": [
                        1
                    ]
                },
                {
                    "group": "Element Noble p",
                    "position": 17,
                    "name": "Helium",
                    "number": 2,
                    "small": "He",
                    "molar": 4.002602,
                    "electrons": [
                        2
                    ]
                }
            ]
        },
        {
            "wiki": "http://en.wikipedia.org/wiki/Period%202%20element",
            "elements": [
                {
                    "group": "Element Alkali s",
                    "position": 0,
                    "name": "Lithium",
                    "number": 3,
                    "small": "Li",
                    "molar": 6.941,
                    "electrons": [
                        2,
                        1
                    ]
                },
                {
                    "group": "Element Alkaline s",
                    "position": 1,
                    "name": "Beryllium",
                    "number": 4,
                    "small": "Be",
                    "molar": 9.012182,
                    "electrons": [
                        2,
                        2
                    ]
                },
                {
                    "group": "Element Metalloid Boron p",
                    "position": 12,
                    "name": "Boron",
                    "number": 5,
                    "small": "B",
                    "molar": 10.811,
                    "electrons": [
                        2,
                        3
                    ]
                },
                {
                    "group": "Element Nonmetal Carbon p",
                    "position": 13,
                    "name": "Carbon",
                    "number": 6,
                    "small": "C",
                    "molar": 12.0107,
                    "electrons": [
                        2,
                        4
                    ]
                },
                {
                    "group": "Element Nonmetal Pnictogen p",
                    "position": 14,
                    "name": "Nitrogen",
                    "number": 7,
                    "small": "N",
                    "molar": 14.0067,
                    "electrons": [
                        2,
                        5
                    ]
                },
                {
                    "group": "Element Nonmetal Chalcogen p",
                    "position": 15,
                    "name": "Oxygen",
                    "number": 8,
                    "small": "O",
                    "molar": 15.9994,
                    "electrons": [
                        2,
                        6
                    ]
                },
                {
                    "group": "Element Halogen p",
                    "position": 16,
                    "name": "Fluorine",
                    "number": 9,
                    "small": "F",
                    "molar": 18.998404,
                    "electrons": [
                        2,
                        7
                    ]
                },
                {
                    "group": "Element Noble p",
                    "position": 17,
                    "name": "Neon",
                    "number": 10,
                    "small": "Ne",
                    "molar": 20.1797,
                    "electrons": [
                        2,
                        8
                    ]
                }
            ]
        }

......它一直在继续......

如何将此JSON反序列化为名为Element的类?如果您愿意,可以忽略“wiki”字段。

我尝试了什么:

Table t = JsonConvert.DeserializeObject<Table> (lines);

class Table {
    public string wiki;
    public Element[] element;
}

class Element {
    public string group, name, small;
    public int position, numer;
    public double molar;
    public int[] electrons;
}

我无法让它发挥作用。

2 个答案:

答案 0 :(得分:2)

你在班级成员中有几个错别字,但关键部分如下:

看一下JSON文档的开头:

{
    "table": [

它实质上意味着您需要一个名为table数组属性的对象。

正确的课程是:

class Root
{
    public Table[] table;
}

class Table
{
    public string wiki;
    public Element[] elements;
}

class Element
{
    public string group, name, small;
    public int position, number;
    public double molar;
    public int[] electrons;
}

和反序列化代码:

var root = JsonConvert.DeserializeObject<Root>(lines);

答案 1 :(得分:0)

Parent = JsonConvert.DeserializeObject<Parent> (lines);

class Parent {
    public Mid[] table;
}

class Mid {
    public string wiki;
    public Element[] elements;
}

class Element {
    public string group, name, small;
    public int position, numer;
    public double molar;
    public int[] electrons;
}