Десериализация массива 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 не является коллекцией.

Другие вопросы по тегам