Reputation: 89
Say I have the following JSON document:
{
"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
]
}
]
}
... and it goes on and on...
How can I deserialize this JSON to a class called Element? You can ignore the "wiki" field if you wish.
What I have tried:
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;
}
I can't get it to work.
Upvotes: 1
Views: 109
Reputation: 205539
You have several typos in the class members, but the essential part is as follows:
Take a look at the beginning of your JSON document:
{
"table": [
It essentially means that you need an object with array property called table
.
The correct classes are:
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;
}
and the deserialization code:
var root = JsonConvert.DeserializeObject<Root>(lines);
Upvotes: 2
Reputation: 3096
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;
}
Upvotes: 0