2016-07-19 2 views
1

я следующий JSON:
Попытка разобрать JSON C#

[ 
{ 
"value1": 2, 
"value2": [ 
    12 
], 
"value3": 10, 
"value4": [ 
    1,2 
], 
"value5": null, 
"value6": 0, 
"value7": 1, 
"value8": 2, 
"value9": 3, 
"value10": [ 
    "4" 
], 
"value11": false, 
"value12": false, 
"value13": 0, 
"value14": "text\n", 
"value15": 2, 
"value16": 0, 
"value17": 3, 
"value18": 2, 
"value19": 2, 
"value20": 0, 
"value21": 5, 
"value22": "10.1", 
"value23": "O", 
"value24": 3, 
"value25": 5, 
"value26": 0, 
"value27": null, 
"value28": false, 
"value29": "Net", 
"value32": 14, 
"value33": [ 
    "F", 
    "M" 
], 
"value34": 0 
}, 
{ 
"value1": 2, 
"value2": [ 
    42 
], 
"value3": 1, 
"value4": [ 

], 
"value5": null, 
"value6": 0, 
"value7": 1, 
"value8": 146, 
"value9": 350, 
"value10": [ 
    "other" 
], 
"value11": false, 
"value12": false, 
"value13": 0, 
"value14": "F\n", 
"value15": 1, 
"value16": 0, 
"value17": 3, 
"value18": 1, 
"value19": 1, 
"value20": 0, 
"value21": 5361, 
"value22": "10.1", 
"value23": "O", 
"value24": 2, 
"value25": 0, 
"value26": 0, 
"value27": null, 
"value28": false, 
"value29": null, 
"value30": null, 
"value31": "Net", 
"value32": 146, 
"value33": [ 
    "F" 
], 
"value34": 0 
} 
] 

И через специальные визуальные студии Past, которые строят для меня следующий класс:

public class Rootobject 
{ 
    public Class1[] Property1 { get; set; } 
} 

public class Class1 
{ 
    public int value1 { get; set; } 
    public int[] value2 { get; set; } 
    public int value3 { get; set; } 
    public object[] value4 { get; set; } 
    public object value5 { get; set; } 
    public int value6 { get; set; } 
    public int value7 { get; set; } 
    public int value8 { get; set; } 
    public int value9 { get; set; } 
    public string[] value10 { get; set; } 
    public bool value11 { get; set; } 
    public bool value12 { get; set; } 
    public int value13 { get; set; } 
    public string value14 { get; set; } 
    public int value15 { get; set; } 
    public int value16 { get; set; } 
    public int value17 { get; set; } 
    public int value18 { get; set; } 
    public int value19 { get; set; } 
    public int value20 { get; set; } 
    public int value21 { get; set; } 
    public string value22 { get; set; } 
    public string value23 { get; set; } 
    public int value24 { get; set; } 
    public int value25 { get; set; } 
    public int value26 { get; set; } 
    public object value27 { get; set; } 
    public bool value28 { get; set; } 
    public string value29 { get; set; } 
    public int value32 { get; set; } 
    public string[] value33 { get; set; } 
    public int value34 { get; set; } 
    public object value30 { get; set; } 
    public string value31 { get; set; } 
} 

Теперь, я попытался к десериализованному json-тексу со следующим кодом:

JavaScriptSerializer serializer = new JavaScriptSerializer(); 
Rootobject o= serializer.Deserialize<Rootobject>(objectString) 

И я получил следующее исключение:

Тип «MyProj.Rootobject» не поддерживается для десериализации массива.

В чем моя проблема?

ответ

2

Попробуйте использовать следующий класс объектов корня

public class RootObject 
{ 
    public int value1 { get; set; } 
    public List<int> value2 { get; set; } 
    public int value3 { get; set; } 
    public List<object> value4 { get; set; } 
    public object value5 { get; set; } 
    public int value6 { get; set; } 
    public int value7 { get; set; } 
    public int value8 { get; set; } 
    public int value9 { get; set; } 
    public List<string> value10 { get; set; } 
    public bool value11 { get; set; } 
    public bool value12 { get; set; } 
    public int value13 { get; set; } 
    public string value14 { get; set; } 
    public int value15 { get; set; } 
    public int value16 { get; set; } 
    public int value17 { get; set; } 
    public int value18 { get; set; } 
    public int value19 { get; set; } 
    public int value20 { get; set; } 
    public int value21 { get; set; } 
    public string value22 { get; set; } 
    public string value23 { get; set; } 
    public int value24 { get; set; } 
    public int value25 { get; set; } 
    public int value26 { get; set; } 
    public object value27 { get; set; } 
    public bool value28 { get; set; } 
    public string value29 { get; set; } 
    public int value32 { get; set; } 
    public List<string> value33 { get; set; } 
    public int value34 { get; set; } 
    public object value30 { get; set; } 
    public string value31 { get; set; } 
} 
+0

это сработало для меня ... Спасибо! – CSharpBeginner

1

Попробуйте

JavaScriptSerializer serializer = new JavaScriptSerializer(); 
var o= serializer.Deserialize<List<Rootobject>>(objectString) 
+0

Привет, список содержит два элемента, но они равны нулю – CSharpBeginner

+0

Не могли бы вы предложить более подробную информацию? – MichaelMao

+0

У меня нет исключения, но элементы списка пустые – CSharpBeginner

1

Вы можете десериализации ваш JSON без Rootobject с помощью Newtonsoft.Json NuGet Пакет:

List<Class1> results = JsonConvert.DeserializeObject<IList<Class1>(objectString).ToList(); 
1

Сначала создайте объект класса, а затем попробовать этот

Rootobject rootobject = new Rootobject(); 

    string json = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(rootobject); 
Смежные вопросы