从Json字符串中获取值

时间:2016-12-09 08:41:33

标签: c# json

我有一个像Json一样的刺痛

var Result= [{"CompanyID":32,"Roles":["Admin"]}]

我需要从中获取CompanyID的值。

我试过像

这样的东西
var obj = JObject.Parse(Result);
int Id=obj["CompanyID"];

但它抛出一些错误“从JsonReader读取JObject时出错。当前JsonReader项不是对象:StartArray。路径'',第1行,第1位。”

任何人都可以提供帮助

事先感谢您的帮助。

1 个答案:

答案 0 :(得分:6)

实际问题是,当您实际拥有一组对象时,您正试图将其解析为JObject。您可以先将其解析为数组,然后索引数组以选择唯一的对象,然后选择CompanyID键,然后将值作为int

获取
var Result = "[{\"CompanyID\":32,\"Roles\":[\"Admin\"]}]";
// Parse your Result to an Array
var jArray = JArray.Parse(Result);
// Index the Array and select your CompanyID
var obj = jArray[0]["CompanyID"].Value<int>();

或者,如果JSON是您经常使用的结构,您也可以将JSON映射到具体类型。这是更有益的,因为您将进行编译时检查 - 如果在选择其中一个键时出现拼写错误或大写错误。

class Program
{
    static void Main(string[] args)
    {
        var Result = "[{\"CompanyID\":32,\"Roles\":[\"Admin\"]}]";
        var cList = JsonConvert.DeserializeObject<List<Company>>(Result);

        var obj = cList.First().CompanyID;
    }
}

public class Company
{
    public int CompanyID { get; set; }
    public List<string> Roles { get; set; }
}