Десериализация массива JSON
Я хотел бы десериализовать строку json, но каким-то образом я не могу получить правильное значение:(Это входная строка json
{
"files":[
{"path":"/c/asd/input.txt","size":13},
{"path":"/c/asd/input.txt","size":136},
{"path":"/c/asd/input.txt","size":483},
{"path":"/c/asd/input.txt","size":136}
],
"md5sum":"bbd88df7b2d8c95f922ebf0d718b5687"
}
Создал класс для него
public class Files
{
public string path { get; set; }
public int size { get; set; }
}
public class myObject
{
public List<Files> files { get; set; }
public string md5sum { get; set; }
}
И пытается использовать JavaScriptSerializer:
var jss = new JavaScriptSerializer();
List<myObject> obj = s.Deserialize<List<myObject>>(File.ReadAllText(json));
Что я делаю неправильно? Счетчик объектов равен нулю. Мне нужно использовать только значение пути.
3 ответа
Решение
Это один корневой объект, а не список. Пытаться:
var obj = s.Deserialize<myObject>(File.ReadAllText(json));
Кроме того, я предполагаю, что json
здесь путь к файлу, а не сам json.
Ваш ввод JSON не является списком. Изменить Deserialize<List<myObject>
в Deserialize<myObject>
Пытаться
jss.Deserialize<myObject>(File.ReadAllText(json));
потому что вы пытаетесь десериализовать коллекцию (List), но объект s не является коллекцией.