使用json.net反序列化和对象问题

时间:2019-05-09 23:09:25

标签: c# json json.net

使用json.net将json反序列化为列表。我的问题是我收到以下消息:

  

Newtonsoft.Json.JsonReaderException:'解析值时遇到意外字符:[。路径“数据”,第1行,位置9。”

我的代码如下:

Dictionary<string, string> JSONObj = JsonConvert.DeserializeObject<Dictionary<string, string>> (response.Content.ToString());

和...

internal class Projects
{
    internal object id;
    internal string gid;
    internal string name;
    internal string resource_type;
}

response.Content.ToString()看起来像这样:

  

{“数据”:[{“ id”:123456,“ gid”:“ 789”,“ name”:“工具-   启动工具”,“ resource_type”:“项目”},{“ id”:123456,         “ gid”:“ 789”,“ name”:“保留详细信息”,“ resource_type”:   “项目”}]}

我的json验证。我敢肯定,这是json的格式,但是我对理解错误的理解还不够。我的方法有什么问题?如何获取格式化的数据以与“项目列表”一致?

1 个答案:

答案 0 :(得分:2)

根据JSON,存在一些根对象(“数据”),因此您的模型应如下所示:

public class Project
{
    public int id { get; set; }
    public string gid { get; set; }
    public string name { get; set; }
    public string resource_type { get; set; }
}

public class RootObject
{
    public List<Project> data { get; set; }
}

然后,用于解析代码的内容也会更改:

var JSONObj = JsonConvert.DeserializeObject<RootObject>(response);

我还建议您仔细考虑一下类名-您的类实际上只是一个Project,而不是Projects的任何组/集合。
还将id的类型设置为object似乎增加了不必要的开销-可以简单地是int / long