将jsonstring转换为对象c#

时间:2017-10-20 08:00:17

标签: c# json visual-studio

我想从我的返回api jsonstring中获取数据。

我的结果字符串看起来像这样

 [
{"Id":12,"name":"testname","type":"testtype"}
{"Id":12,"name":"testname","type":"testtype"}
{"Id":12,"name":"testname","type":"testtype"}
 ]

如何将此数据提取到c#对象

我只能这样做

    var obj = JObject.Parse(result);
    var ID = (int)obj["Id"];
    var Name = (String)obj["name"];
    var type = (String)obj["type"];

 User u = new User(ID,Name,Type);

2 个答案:

答案 0 :(得分:3)

您的字符串无效JSON,因此将其设置为有效JSON是快速处理它的第一步。最简单的方法是使它成为JSON数组:

string jsonArray = "["
                   + string.Join(", ", json.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
                   + "]";

从那时起它很简单(参见我的相关答案:Easiest way to parse JSON response):

var result = JsonConvert.DeserializeObject<User[]>(jsonArray);

另一个选择是自己拆分行,然后手动解析并添加项目到列表中。

答案 1 :(得分:0)

Result是一个JSON数组..所以循环和解析

  list<User> userList = new list<User>();

    for(int i=0 ; i <result.length; i++)
    {
        var obj = JObject.Parse(result[i]);
        var ID = (int)obj["Id"];
        var Name = (String)obj["name"];
        var type = (String)obj["type"];

        User u = new User(ID,Name,Type); //create User

        userList.add(u);                 //Add to list
    }