使用spring-cloud搭建服务时候需要取解析传来的请求参数,以及给出返回的结果。其中大多情况下这些参数和结果都是以json格式进行传递的。
对于json的处理分为两种:
- 以json字符串的方式进行接收与返回,也就是说需要自己手动解析这个字符串,或者调用fastjson、gson这些工具来将他们与java对象之间进行互相转化。
- 搭建服务时候使用java对象去接收这个请求参数,给出响应时也是直接以对象的方式进行返回,这种情况spring-cloud框架会自动帮你解析和封装json。
除了自己手动调用set方法解析之外,无论是调用工具解析还是框架自动解析,就要求你定义的java实体类中变量名与json串中的key对应起来,这样才能自动的将value映射到变量中。
有时候会遇到一些特殊情况,由于Java变量命名规范,json的key无法和Java变量名对应,如:parse-content,就无法使用它来作为变量名。
针对第一种情况,如果你采用的是fastjson来自动解析,可以在你定义的实体类的变量前面加入 @JSONField(name = “parse-content”)注解,name的值就是json中的key。
@JSONField(name = "doc-key")
private String doc_key;
这样使用fastjson自动解析的时候就会将json中这个key的值映射到这个变量中了。
第二种情况,框架解析使用的是jackson,需要添加@JsonProperty(value = “parse-content”)注解
@JsonProperty(value = "parse-content")
private List<Map<String, Object>> parseContent;
注意: 注解不要选错了,com.fasterxml.jackson.annotation.JsonProperty;
这两个注解也可以单独添加到get或者set方法上,加到set方法表示接收参数时候按照这个名字解析,加到get表示返回时候将json的key变更为注解中的值。