【发布时间】:2019-10-29 08:35:34
【问题描述】:
我需要将 json 数据发送到 java 中的 post call。以下是代码
我的pojo课
public class Data{
@JSONProperty("clientIP")
String clientIP;
@JSONProperty("empID")
String empID;
public Data setClientIP(String clientIp){
this.clientIP = clientIp;
return this;
}
public Data setEmpID(String empId){
this.empID = empId;
return this;
}
public String toString(){ /*toString conversion*/ }
}
设置clientIp的过滤器类
public doFilter(ServletRequest request, ServletResponse response){
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
String clientIP = httpServletRequest.getRemoteAddr();
Data data = new Data();
data.setClientIP(clientIP);
}
设置其他 emp 相关数据的 Java 类,例如 userId
public Emp createEmp(empId, /*other emp related data*/){
Data data = new Data();
data.setEmpID(empId);
//append clientIp to this data object
ConvertToJSON(data);
}
在另一个服务类中,我正在使用杰克逊绑定将此数据转换为 json 格式的字符串。在这里,我想将之前设置的 clientIp 附加到此数据中,以便我可以将整个数据对象转换为 json 格式的字符串
将 java 对象转换为 json 的类
convertToJSON(Object data){
ObjectMapper mapper = new ObjectMapper();
String jsonString = null;
jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(data);
}
I need output like { clientIP: 123.123.123.123, empID: emp123 }
currently it displays { clientIP: null, empID: emp123} which is obvious
【问题讨论】:
-
因为对于方法
doFilter,您创建一个Data的实例来设置clientIP,而对于方法createEmp,您创建另一个Data的实例来设置empId。 -
@LHCHIN 我知道,这就是它显示为空的原因。我的问题是,有没有其他方法可以将 clientIp 附加到新的实例?
-
你在哪里调用
createEmp方法? -
@Iris_geek 一种方法是存储
clientIP信息。进入会话,然后在调用方法createEmp时从会话中检索它并设置它。
标签: java json jackson-databind