【问题标题】:Get value from a Json string从 Json 字符串中获取值
【发布时间】:2016-12-09 16:51:33
【问题描述】:

我有一个像

的 Json 刺痛
var Result= [{"CompanyID":32,"Roles":["Admin"]}]

我需要从中获取 CompanyID 的值。

我尝试了类似的东西

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

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

谁能帮忙

提前感谢您的帮助。

【问题讨论】:

标签: c# json


【解决方案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 是您经常使用的结构,您也可以将其映射到具体类型。这更有利于您进行编译时检查 - 以防在选择其中一个键时出现拼写错误或大写错误。

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; }
}

【讨论】:

    猜你喜欢
    • 2016-09-30
    • 2021-07-13
    • 2023-03-18
    • 1970-01-01
    • 2017-07-25
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多