я в беде с этим: JSONНе удается создать правильный класс
{
"tester": [
{
"type": {
"ID": "R89d",
"Description": "Test",
"lastUpdated": "2016-03-20 20:45:09",
},
"specification": {}
},
{
"type": {
"ID": "RB01",
"Description": "Another test",
"lastUpdated": null
},
"specification": {
"0": {
"ID": "RB01",
"number": 1,
"Type": "RB"
},
"1": {
"ID": "RB01",
"number": 3,
"Type": "RB"
}
}
},
{
"type": {
"ID": "RT40",
"Description": "Test 2",
"lastUpdated": null,
},
"specification": {}
}
]
}
, в частности, когда я положил его в json2c# сайт я получил этот класс:
public class Type
{
public string ID { get; set; }
public string Description { get; set; }
public string lastUpdated { get; set; }
}
public class __invalid_type__0
{
public string ID { get; set; }
public int number { get; set; }
public string Type { get; set; }
}
public class __invalid_type__1
{
public string ID { get; set; }
public int number { get; set; }
public string Type { get; set; }
}
public class Specification
{
public __invalid_type__0 __invalid_name__0 { get; set; }
public __invalid_type__1 __invalid_name__1 { get; set; }
}
public class Tester
{
public Type type { get; set; }
public Specification specification { get; set; }
}
public class RootObject
{
public List<Tester> tester { get; set; }
}
Я DON» я знаю, почему сайт вернет мне invalid type
, потому что синтаксис json правильный. Моя цель - создать класс, который позволит мне читать все свойства specification
, как вы можете видеть в json массив массивов. Мне нужно сделать что-то, что позволит мне получить доступ ко всем значениям specification
как ID - Number - Type
. На самом деле мне это удалось только с типом с чем-то вроде этого:
string responseText = "json above";
var obj = JsonConvert.DeserializeObject<RootObject>(responseText);
foreach(var item in obj.Tester){ //loop through Tester item
//what I need:
foreach(var spec in item.specification){ //not possible
spec.Description; ...
}
}
Хотя JSON синтаксис правильный, это не значит, что он может создать для него допустимый тип C#. JSON, который вы опубликовали, приведет к именам свойств '0' и' 1', которые недопустимы. Есть ли вероятность, что вы можете переделать свой вывод JSON на то, что является массивом _actual_, а не быть объектом с подобными массиву свойствами? Несмотря на то, что вы сможете провести время для десериализации этого в некотором роде, более быстрый и понятный подход может помочь исправить исходный код. –
Также 'type' кажется проблематичным с учетом текущего класса' Type'. –
@JamesThorpe Я могу удалить только '' 0 "и' "1". Я не знаю, может ли это редактирование помочь. Это: http://pastebin.com/LXPzrmjJ – Dillinger