无法正确解析JSON数据

时间:2016-08-17 10:32:13

标签: c# json json.net

我有一个JSON,如下所示

var source = "{'Departments': {'Department': [{'DeptName': 'HR','Deptid': '9228590'},{'DeptName': 'Finance','Deptid': '9295426' }]}}";

我需要获取所有DeptidDeptName

我正在使用 Newtonsoft.Json 并尝试使用

using Newtonsoft.Json;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            GetInformation();
        }

        private static void GetInformation()
        {
            try
            {
                var source = "{'Departments': {'Department': [{'DeptName': 'HR','Deptid': '9228590'},{'DeptName': 'Finance','Deptid': '9295426' }]}}";
                dynamic stuff =  JsonConvert.DeserializeObject(source);

                string DeptId = stuff.Deparments.Department[0].Deptid;
                string DeptName = stuff.Deparments.Department[0].DeptName;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}

但是我得到Null Reference异常。

4 个答案:

答案 0 :(得分:2)

您使用 Depid 而不是 Deptid

它应该是:    string DeptId = stuff.Departments.Department [0] .Deptid;

答案 1 :(得分:1)

您的对象没有属性DeptId,只有Depid。此外,这些属性是嵌套的,所以我想你需要使用这样的东西:

string DeptId = stuff.Departments.Department[0].Depid;
string DeptName = stuff.Departments.Department[0].DeptName;

答案 2 :(得分:1)

试试这个

stuff.Departments.Department[0].DeptName
stuff.Departments.Department[0].Depid

这只是从Array中获取第一个元素的示例。您需要迭代数组以获取数组中所有对象的名称和ID。

答案 3 :(得分:0)

实际上,Objects使用了错误的名称,例如Departments, Depid。如果你更正了这个objects名称,它将起作用。

 string DeptId = stuff.Departments.Department[0].Deptid;
 string DeptName = stuff.Departments.Department[0].DeptName;