使用Jackson解析首字母大写的json字符串
Jackson在解析返回的json字符串时始终报错,纠结很久之后才找到原因,原来是是由于json字符串中的字母都是首字母大写,导致jackson找不到相应的KEY。
在项目中经常使用从服务器获取的数据,有时从服务器获取的json字符串中的首字母是大写的,使用Jackson解析是就会报一下错误:
Exception in thread "main" org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "XXX" (Class xxxx), not marked as ignorable .
异常信息告诉说XXX属性字段在类型xxx中没有找到,也没有标记为忽略。
但是在你的bean中确实存在这个字段,而只不过是这个字段的首字母是大写而已。
解决这个问题只需要在属性字段上面加上@JsonProperty();即可。
1 public class CommissionItemVo implements Serializable{ 2 3 /** 4 * 5 */ 6 private static final long serialVersionUID = 1L; 7 8 private int docId; 9 @JsonProperty("CName") 10 private String CName; 11 @JsonProperty("CPhone") 12 private String CPhone; 13 @JsonProperty("BlockName") 14 private String BlockName; 15 @JsonProperty("SeeTime") 16 private String SeeTime; 17 @JsonProperty("Cost") 18 private String Cost; 19 @JsonProperty("EndSettleTime") 20 private String EndSettleTime; 21 22 public int getDocId() { 23 return docId; 24 } 25 26 27 28 public void setDocId(int docId) { 29 this.docId = docId; 30 } 31 32 33 34 public String getCName() { 35 return CName; 36 } 37 38 39 40 public void setCName(String cName) { 41 CName = cName; 42 } 43 44 45 46 public String getCPhone() { 47 return CPhone; 48 } 49 50 51 52 public void setCPhone(String cPhone) { 53 CPhone = cPhone; 54 } 55 56 57 58 public String getBlockName() { 59 return BlockName; 60 } 61 62 63 64 public void setBlockName(String blockName) { 65 BlockName = blockName; 66 } 67 68 69 70 public String getSeeTime() { 71 return SeeTime; 72 } 73 74 75 76 public void setSeeTime(String seeTime) { 77 SeeTime = seeTime; 78 } 79 80 81 82 public String getCost() { 83 return Cost; 84 } 85 86 87 88 public void setCost(String cost) { 89 Cost = cost; 90 } 91 92 93 94 public String getEndSettleTime() { 95 return EndSettleTime; 96 } 97 98 99 100 public void setEndSettleTime(String endSettleTime) { 101 EndSettleTime = endSettleTime; 102 } 103 104 105 106 public static long getSerialversionuid() { 107 return serialVersionUID; 108 } 109 110 111 112 @Override 113 public String toString() { 114 return "CommissionItemVo [docId=" + docId + ", CName=" + CName + ", CPhone=" + CPhone + ", BlockName=" + BlockName + ", SeeTime=" + SeeTime + ", Cost=" + Cost + ", EndSettleTime=" + EndSettleTime + "]"; 115 } 116 117 118 119 }
标签:
Android
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
· C# 13 中的新增功能实操
· Supergateway:MCP服务器的远程调试与集成工具
· Vue3封装支持Base64导出的电子签名组件