Json反序列化返回null

时间:2017-08-22 16:51:09

标签: c# json

这是JSON响应

from pyspark.sql import functions as F
table_a.join(table_b, table_a.uuid == table_b.uuid).withColumn("flag", F.when((table_b.NOD ==1) | ((table_b.flag_3 == 1) & (table_b.flag_1==0) & (table_b.testingSold == 0),  F.lit(1)))

这是我的JSON类

{
  "result": [
    {
      "sys_id": "85071a1347c12200e0ef563dbb9a71c1",
      "number": "INC0020001",
      "description": ""
    }
  ]
}

以下是我要反序列化的内容

    public class Result
{
    public string sys_id { get; set; }
    public string number { get; set; }
    public string description { get; set; }
}

public class jsonResult
{
    public IList<Result> result { get; set; }
}

看起来它从未在我的JSON类中分配任何东西。 这是我第一次处理JSON和Web调用。我错过了什么? API调用确实返回了正确的JSON,我使用json2csharp来创建我的json类。

谢谢!

2 个答案:

答案 0 :(得分:2)

您需要反序列化json字符串中表示的完整对象。在您的情况下,jsonResult

之后,您将通过jsonResult

的属性访问您需要的值
strReponse = rClient.makeReqest();
var deserializedResult = JsonConvert.DeserializeObject<jsonResult>(strReponse);
var number = deserializedResult.result.First().number;
MessageBox.Show(number);

因为jsonResult.result类型为IList,所以可能更安全地循环显示所有可能的结果

strReponse = rClient.makeReqest();

var deserializedResult = JsonConvert.DeserializeObject<jsonResult>(strReponse);
foreach (var result in deserializedResult.result)
{
    MessageBox.Show(result.number);
}

答案 1 :(得分:0)

您应该反序列化为jsonResult Result

所以试试这个:

jsonResult deserializedProduct = JsonConvert.DeserializeObject<jsonResult>(strReponse);

你也可以得到这样的列表值:

var firstResult = deserializedProduct.result.FirstOrDefault();
var someSpecialResults = deserializedProduct.result.Where(r=>r.number.Contains("123"));

另外:

if (firstResult != null)
   System.Windows.Forms.MessageBox.Show(firstResult .number);

你也可以像这样迭代它们:

deserializedProduct.result.ForEach(r=> System.Windows.Forms.MessageBox.Show(r.number);)

我希望对你有所帮助:)。