这是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类。
谢谢!
答案 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);)
我希望对你有所帮助:)。