RestSharp:从结果中获取空值。调试结果时的数据虽然返回了 JSON

Posted

技术标签:

【中文标题】RestSharp:从结果中获取空值。调试结果时的数据虽然返回了 JSON【英文标题】:RestSharp :Getting null from the result.Data althouh at the time of debug result has JSON returned 【发布时间】:2016-09-27 21:20:47 【问题描述】:

我正在使用 RestSharp 并尝试反序列化 JSON 结果集,当我运行代码时,我从 result.Data 得到空值,尽管在调试时结果返回了 JSON。

private static void GetPanelList()

    var client = new RestClient("http://CCCCCC.XXXXXX.com/API/v3/mailinglists/ML_dfgfghfghfh/contacts");
    var request = new RestRequest(Method.GET);
    request.AddHeader("cache-control", "no-cache");
    request.AddHeader("x-api-token", "JHFKFKJFYILIOROIY");
    // IRestResponse response = client.Execute(request);
    var result = client.Execute<List<PanelList>>(request);
    foreach(var i in result.Data)
    
        foreach(var j in i.elements)
        
            Console.WriteLine(j.firstName);
        
    

这是我的 POCO:

public class PanelList

    public List<elements> elements  get; set; 


public class elements

    public string id  get; set; 
    public string firstName  get; set; 
    public string lastName  get; set; 
    public string email  get; set; 
    public string externalDataReference  get; set; 
    public List<EmbededData> ED  get; set; 
    public List<ResponseHistory> RH  get; set; 
    public List<EmailHistory> EH  get; set; 

这是我试图解析的 json 结果的样子。

     "result": 
"elements": [
  
    "id": "MLRP_b7q690QRSqCxVuR",
    "firstName": "S1-User1-firstname",
    "lastName": "S1-U2-lastname",
    "email": "S1U1@XXXX.org.au",
    "externalDataReference": null,
    "embeddedData": 
      "DateTaken": "20160519",
      "TriggerResponseID": "R_3fE6zgBzLa24dgD",
      "TriggerSurveyID": "SV_3TXTMnJlsUxVGRL"
    ,
    "language": null,
    "unsubscribed": false,
    "responseHistory": [
      
        "responseId": "R_3fE6zgBzLa24dgD",
        "surveyId": "SV_3TXTMnJlsUxVGRL",
        "date": "2016-05-20T04:09:09Z",
        "emailDistributionId": null,
        "finishedSurvey": true
      
    ],
    "emailHistory": [
      
        "emailDistributionId": "EMD_41wVLKlQaADQBcF",
        "date": "2016-05-24T00:33:02Z",
        "type": "Invite",
        "result": "Success",
        "surveyId": "SV_8wFieltINfFL2gl",
        "read": false
      
    ]
  ]

【问题讨论】:

你说的调试时是什么意思?这是否意味着当您在调试模式下执行它时,它会返回正确的数据(将 firstName 输出到控制台),但是当您运行它时,result.Data 为空? 我在下面的步骤中从执行中得到了结果.. var result = client.Execute>(request);但在那之后,当尝试循环它并且当我说 result.Data 时,它不会返回任何元素的结果集。 您的 json 无效 【参考方案1】:

您不应该读取结果“容器”对象吗?

容器类:

public class PanelListContainer

    public PanelList result  get; set; 

获取代码:

var result = client.Execute<PanelListContainer>(request);

【讨论】:

感谢 Hosney,但对于 PanelListContainer,我必须将其称为 List 才能使其正常工作。 太棒了!奇怪的是您必须阅读 List ,因为您的 json 不显示数组。

以上是关于RestSharp:从结果中获取空值。调试结果时的数据虽然返回了 JSON的主要内容,如果未能解决你的问题,请参考以下文章

通过在反应中获取 API 获得空值和实际结果

RestSharp组件中止线程问题

如何从 Web API 获取十进制值 .00

反序列化时的 Newtonsoft.JSON 空值

Oracle 中参数中具有空值的结果

Spring Boot 多数据库从辅助数据库中提供空值