Java POJO中以String类型存储内嵌JSON对象的正确JSON表示方法
InputRequest POJO 对应合法JSON结构说明
服务接收请求对应的Java POJO类定义如下:
@Data public class InputRequest{ private Information info; private String response; }
传值规则说明
最容易出错的是response字段的格式,这里明确两个字段的传值要求:
info字段为自定义Information类型,传参时直接按照Information类的实际字段结构,嵌套对应JSON对象即可response字段是String类型,即使你需要用它承载结构化的JSON对象内容,也不能直接在该字段下嵌套未转义的JSON对象,必须把待承载的JSON内容转义为合法字符串再传入。
举个例子,如果你需要response承载的JSON内容为:
{ "country":"Canada", "State":"Ontatio" }
那么整个请求的合法JSON结构如下:
{ "info": { // 此处替换为Information类对应的实际字段键值对 }, "response": "{\"country\":\"Canada\",\"State\":\"Ontatio\"}" }
踩坑提示:如果直接把未转义的JSON对象写在
response字段下,Jackson、Fastjson等常用JSON序列化框架在反序列化请求时,会抛出类型不匹配错误,无法将JSON对象值转换为String类型的字段值,导致请求解析失败。
内容的提问来源于stack exchange,提问作者Esh
相关产品推荐
相关产品推荐

