尝试解析JSON时出现JsonToken.StartArray错误

时间:2018-10-04 12:00:43

标签: c# .net json json.net

我有一个需要解析的JSON,我将其解析如下:

JObject json = JObject.Parse(jsonProfile);

JSON的格式为:

[{ "Id": "mahesh", "GeneralInfo": { "FirstName": "sharma", "LastName": "kanth", "PreferredFirstName": "Akash", "Title": "Designer", "InformalTitle": "Designer", "Gender": "", "Discipline": "", "Department": "Strategy", "BusinessUnit": "", "BrandFunction": "", "ParentAgency": "Public", "Agency": "fish", "AgencyImagePath": "", "Hub": "Public", "SubRegion": "America", "Region": "Americas", "Continent": "North America", "Country": "United States", "State": "Oregon", "Location": "Portland", "Email": "sharma@gmail.com", "SkypeName": "", "Phone": "" }}]

运行此命令时,出现以下错误:

{"Error reading JObject from JsonReader. Current JsonReader item is not an object: StartArray. Path '', line 1, position 1."} 

如何处理“ [”括号?

1 个答案:

答案 0 :(得分:0)

如果您知道json,则可以直接用DeserializeObject解析json:

Try it online!

var root = JsonConvert.DeserializeObject<List<RootObject>>(json);
Console.WriteLine(root[0].GeneralInfo.Email);

输出

sharma@gmail.com

类(由json2csharp生成,但是vs也可以做到)

public class GeneralInfo
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string PreferredFirstName { get; set; }
    public string Title { get; set; }
    public string InformalTitle { get; set; }
    public string Gender { get; set; }
    public string Discipline { get; set; }
    public string Department { get; set; }
    public string BusinessUnit { get; set; }
    public string BrandFunction { get; set; }
    public string ParentAgency { get; set; }
    public string Agency { get; set; }
    public string AgencyImagePath { get; set; }
    public string Hub { get; set; }
    public string SubRegion { get; set; }
    public string Region { get; set; }
    public string Continent { get; set; }
    public string Country { get; set; }
    public string State { get; set; }
    public string Location { get; set; }
    public string Email { get; set; }
    public string SkypeName { get; set; }
    public string Phone { get; set; }
}

public class RootObject
{
    public string Id { get; set; }
    public GeneralInfo GeneralInfo { get; set; }
}
相关问题