1

我想反序列化一个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));

我究竟做错了什么?obj 计数为零。我只需要使用路径值。

4

3 回答 3

4

那是一个根对象,而不是列表。尝试:

var obj = s.Deserialize<myObject>(File.ReadAllText(json));

另外,我假设json这里是文件的路径,而不是 json 本身。

于 2013-11-15T10:10:09.313 回答
0

尝试

jss.Deserialize<myObject>(File.ReadAllText(json));

因为您尝试反序列化集合(List),但 s 对象不是集合。

于 2013-11-15T10:11:52.727 回答
0

您的输入 json 不是列表 。更改Deserialize<List<myObject>Deserialize<myObject>

于 2013-11-15T12:08:16.373 回答