随着实际工作中接触到的后端接口开发,对于Java语言开发过程中的一些问题进行记录。
Q1、如何保证vo输出结构为大写字段?
A:使用JSONField标识
@JSONField(name = "BDCDYH")
private String BDCDYH;
@JSONField(name = "QLLX")
private String QLLX;
Q2、如何对vo输出的时间字段进行对应格式转换?
A、使用format进行转换
@JSONField(name = "DJSJ", format = "yyyy-MM-dd")
private Date DJSJ;
Q3、对于有些在代码逻辑处理中用到的字段,但最后结果不展示的字段,如何处理?
A、标识该字段不进行序列化即可,即加入 serialize = false
@JSONField(name = "DJYWH", serialize = false)
private String DJYWH;
Q4、对于JSONObject对象,如果想保留完整的结构输出,特别是平时在查询数据库时,有些字段值为null,但又希望接口能完整输出所有字段结果,该如何做?
A、如下,在相关转换时,加入SerializerFeature.WriteMapNullValue标识
JSONObject resultJson = {"res": [{"a":"aa", "b":"bb", "c": null}]}
// 不会过滤掉值为null的键
JSONObject.parse(JSONObject.toJSONString(resultJson, SerializerFeature.WriteMapNullValue));
// 会过滤掉值为null的键
JSONObject.parse(resultJson.toJSONString());
Q5、如果需要在后端进行gis服务地址请求,如何做?
A、使用如下代码在后端进行请求。网上也有很多人使用HttpURLConnection的相关方法去做,但是发现HttpURLConnection稳定性没有如下方式好,有可能在某些场景下无法很好的完成请求。比如笔者曾经使用HttpURLConnection对arcgis 10.8的服务进行请求就总是出错。
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet request = new HttpGet(url);
HttpResponse response = httpClient.execute(request);
int statusCode = response.getStatusLine().getStatusCode();
if(statusCode == 200){
str = EntityUtils.toString(response.getEntity());
httpClient.close();
} else {
throw new Exception("arcgis服务查询应答异常: " + response);
}