我有一个像

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


我需要从中获取CompanyID的值。

我尝试了类似的东西

var obj = JObject.Parse(Result);
int Id=obj["CompanyID"];


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

谁能帮忙

预先感谢您的帮助。

最佳答案

实际的问题是,当您实际上有一个对象数组时,您试图将其解析为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; }
}

10-08 18:41