Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jackson数据绑定注释将java对象附加到另一个对象_Java_Json_Jackson Databind - Fatal编程技术网

使用jackson数据绑定注释将java对象附加到另一个对象

使用jackson数据绑定注释将java对象附加到另一个对象,java,json,jackson-databind,Java,Json,Jackson Databind,我需要用java向post调用发送json数据。下面是代码 我的pojo课 public class Data{ @JSONProperty("clientIP") String clientIP; @JSONProperty("empID") String empID; public Data setClientIP(String clientIp){ this.clientIP = clientIp; return

我需要用java向post调用发送json数据。下面是代码

我的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*/ }
}
筛选器类,其中am设置clientIp

public doFilter(ServletRequest request, ServletResponse response){
     HttpServletRequest httpServletRequest = (HttpServletRequest) request;
     String clientIP = httpServletRequest.getRemoteAddr();
     Data data = new Data();
     data.setClientIP(clientIP);
}
Java类,其中am设置其他与emp相关的数据,例如userId

public Emp createEmp(empId, /*other emp related data*/){

   Data data = new Data();
   data.setEmpID(empId); 

   //append clientIp to this data object

   ConvertToJSON(data);
}
在另一个服务类中,我使用jackson绑定将此数据转换为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

正如我在评论中所说,一种简单的方法是将
clienIP
存储到web过滤器中的session属性中,如下所示:

String clientIP = httpServletRequest.getRemoteAddr();
HttpSession session = httpServletRequest.getSession();
session.setAttribute("X-CLIENT-IP", clientIP);
然后,如果您有
HttpServletRequest request
的声明,则可以使用
request.getSession().getAttribute(“X-CLIENT-IP”).toString()
来检索客户端IP 之后,您可以将其作为method
createEmp
的参数传递,例如

public Emp createEmp(empId, clientIp) {
    Data data = new Data();
    data.setClientIP(clientIp);
    data.setEmpID(empId);
    ...
}

因为对于方法
doFilter
您创建了一个
Data
实例来设置
clientIP
,对于方法
createEmp
您创建了另一个
Data
实例来设置
empId
@LHCHIN我知道,这就是为什么它显示为null。我的问题是,有没有其他方法可以将clientIp附加到新iInstance?你在哪里调用
createEmp
方法?@Iris\u geek一种方法是存储
clientIp
信息。进入会话,然后在调用方法
createEmp
并设置它时从会话中检索它。