Xamarin 表单反序列化 Json 不工作
Posted
技术标签:
【中文标题】Xamarin 表单反序列化 Json 不工作【英文标题】:Xamarin Forms Deserialise Json Not Working 【发布时间】:2020-11-20 00:43:50 【问题描述】:我在反序列化 json 包时遇到问题。
我尝试在线复制示例,但即使代码执行良好,似乎也无法提取总价格。
我只是想在这里从我的 json 包中提取总价:
"rates":["service_name":"FastDelivery","service_code":"FD","total_price":7.150],"success":true
这是我的代码:
Rate response_variables = JsonConvert.DeserializeObject<Rate>(response_package);
var response_field = response_variables.total_price;
Console.WriteLine("Shipping Price:");
Console.WriteLine(response_field);
还有我的公开课率
public class Rate
public string service_name get; set;
public string service_code get; set;
public double total_price get; set;
我错过了什么吗?还是有其他方法可以提取 total_price?
【问题讨论】:
您的类结构与 json 不匹配。复制 json,在 Visual Studio 中打开一个新文件,转到 Edit > Paste special > Paste json as classes。然后,根据需要更改类型名称。 【参考方案1】:就像 Crowcoder 所说,您要反序列化的类不是“Rate”对象,它是一个包含 Rate 对象列表和布尔值的类。
我建议您在https://json2csharp.com/ 中检查您需要用于 JSON 的模型。
在这种情况下,您尝试读取的 JSON 反序列化为:
public class Rate
public string service_name get; set;
public string service_code get; set;
public double total_price get; set;
public class Root
public List<Rate> rates get; set;
public bool success get; set;
而“Root”是要包含您尝试读取的元素的类。
要提取总价格,您必须通过循环访问每个 Rate:
Root response_variables = JsonConvert.DeserializeObject<Root> (response_package);
foreach(var rate in response_variables.rates)
var price = rate.total_price;
//Do stuff
【讨论】:
非常感谢奥斯卡,非常感谢!现在开始工作了! :)以上是关于Xamarin 表单反序列化 Json 不工作的主要内容,如果未能解决你的问题,请参考以下文章
无法反序列化当前 JSON 对象 xamarin.forms