C# 使用Newtonsoft反序列化JSON提取业主信息问题求解
问题原因
- 你提供的JSON样本每个对象的最后一个属性末尾存在多余的尾随逗号,Newtonsoft.Json默认配置下会直接解析报错
- 反序列化得到的是
List<Homeowners>集合类型,直接调用ToString()方法只会输出集合的类型全名,不会打印集合内的具体字段内容
调整方案
修改desiraliseJSON方法,先配置JSON解析规则兼容尾随逗号,再把解析得到的业主信息按需求拼接后输出到文本框即可,示例代码如下:
private void desiraliseJSON(string strJSON) { try { // 配置解析规则,允许JSON存在尾随逗号,兼容返回不规范JSON的第三方接口 var settings = new JsonSerializerSettings { TrailingCommasHandling = TrailingCommasHandling.All }; // 反序列化得到业主集合 List<Homeowners> jsondata = JsonConvert.DeserializeObject<List<Homeowners>>(strJSON, settings); // 方式1:按自定义文本格式拼接输出(可按需调整格式) StringBuilder sb = new StringBuilder(); foreach (var owner in jsondata) { sb.AppendLine($"姓名:{owner.HomeOwnerFirstName} {owner.HomeOwnerLastName},地址:{owner.PropertyAddress}"); } txtBox2.Text = sb.ToString(); // 方式2:如果需要输出格式化JSON结构,可替换为下面的代码 // txtBox2.Text = JsonConvert.SerializeObject(jsondata, Formatting.Indented); } catch (Exception ex) { txtBox2.Text = "Error: " + ex.Message; } }
内容的提问来源于stack exchange,提问作者BradI
相关产品推荐
相关产品推荐

