首页 > 解决方案 > 解析值时遇到意外字符:[。路径“数据”,第 1 行,位置 26

问题描述

当我试图解析 Json 结果时,我得到以下异常:

解析值时遇到意外字符:[。路径“数据”,第 1 行,位置 26。

这是我的 Json 数据:

{
   "StatusCode":200,
   "Data":[
      {
         "MemberId":1,
         "CreaterUserId":5,
         "FirstName":"Saravanan",
         "LastName":"Subramanian",
         "Title":"Physician\u0019s Assistant",
         "License":"A 123447",
         "Email":"saravanan.radhamani@gmail.com",
         "PhoneNumber":"1234567",
         "IsSign":true,
         "IsMemberActive":true,
         "CreatedDate":"2018-06-23T15:45:44.843",
         "PhotoPath":null
      }
   ]
}

这是我的 C# 代码:

public static void Main(string[] args)
{
    string response = null;
    try
    {
        response = makeRequest();
    }
    catch (Exception e)
    {
        Console.WriteLine(e.Message);
    }

    var data = JsonConvert.DeserializeObject<PolstForm>(response);
    Console.WriteLine(string.Format("StatusCode : {0} , Data : {1}",
               data.StatusCode,
               data.Data[0]));
    Console.ReadKey();
}

private static string makeRequest()
{
    var client = new RestClient(urlString);
    var request = new RestRequest(Method.GET);
    request.AddHeader("cache-control", "no-cache");
    request.AddHeader("accept", "application/json");
    return client.Execute(request).Content; //the Content (body) of the response
}

这是我的 PolstForm.class

public class PolstForm
{
    public int StatusCode { get; set; }
    public string Data { get; set; }
}

当我试图解析来自 json 的数据时,它返回一个错误。

显示的错误是:

用户代码未处理 JsonReaderException: Newtonsoft.Json.dll 中发生类型为“Newtonsoft.Json.JsonReaderException”但未在用户代码中处理的异常附加信息:解析值时遇到意外字符:[。路径“数据”,第 1 行,位置 26。

响应包含上述 Json 格式。

如果你有替代的东西,请与我分享。

标签: c#asp.net

解决方案


您的PolstForm课程与您的 Json 结构不匹配。

例如,我会这样写:

public class PolstForm
{
    public int StatusCode { get; set; }
    public CustomData[] Data { get; set; }
}

public class CustomData
{
    public int MemberId {get;set;}
    public int CreaterUserId {get;set;}
    public string FirstName {get;set;}
    public string LastName {get;set;}
    public string Title {get;set;}
    public string License {get;set;}
    public string Email {get;set;}
    public string PhoneNumber {get;set;}
    public bool IsSign {get;set;}
    public bool IsMemberActive {get;set;}
    public DateTime CreatedDate {get;set;}
    public string PhotoPath {get;set;}
}

推荐阅读