【问题标题】:Unexpected character encountered while parsing value: [. Path 'Data', line 1, position 26解析值时遇到意外字符:[。路径“数据”,第 1 行,位置 26
【发布时间】:2018-07-09 11:37:50
【问题描述】:

当我尝试解析 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格式。

如果你有其他的东西,请与我分享。

【问题讨论】:

  • 你确定你已经提交了被解析的实际 JSON吗?您显示的内容在第 1 行没有位置 26。
  • json 看起来不错。您是按原样从response 复制它还是更改了它?您可能已经删除了一些造成问题的字符...
  • 现在我正在编辑我的代码并添加 PolstForm 类,请告诉我一个解决方案。从我认为的 PhotoPath 解析空值错误。
  • string Data 你的 Json 在这里显示一个数组而不是一个字符串。还有你期望data.Data[0] 会返回什么?

标签: c# asp.net


【解决方案1】:

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

【讨论】:

  • 嗨@Rafalon 我已经以与您的代码类似的方式找到了答案。我只是将课程作为您的代码前的列表.. List customData;感谢您花时间为我考虑解决方案。
  • 不客气,很高兴它帮助您解决了问题:)
【解决方案2】:

如你所知, json 字符串无法解析为字符串数据; [公共字符串数据{获取;放; }]

 [
   {
     "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
  }

]

【讨论】:

  • 我面临同样的问题。它在解析数据后来自 Asp.Net Core。您可以在此处进行字符串操作。我做到了。
猜你喜欢
  • 2019-12-31
  • 2020-01-15
  • 2020-11-26
  • 2018-07-25
  • 2015-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-30
相关资源
最近更新 更多