有没有办法将json有效负载映射到Model bean。如果可能的话,请给我一个例子。
以下是我正在使用的课程。
package com.sample;
import java.io.Serializable;
public class Employee implements Serializable{
private String firstName;
private String lastName;
private int id;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("Employee [firstName=").append(firstName)
.append(", lastName=").append(lastName).append(", id=")
.append(id).append("]");
return builder.toString();
}
}
以下是我的动作类。
package com.sample.controller;
import com.opensymphony.xwork2.ModelDriven;
import com.sample.Employee;
public class EmployeeController implements ModelDriven<Employee> {
private String name = "Hari krishna";
Employee emp = new Employee();
public String addEmployee() {
System.out.println(emp);
return "success";
}
@Override
public Employee getModel() {
return emp;
}
}
以下是我的struts.xml
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" extends="json-default">
<interceptors>
<interceptor-stack name="jsonStack">
<interceptor-ref name="json">
<param name="enableSMD">true</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<action name="addEmployee" class = "com.sample.controller.EmployeeController" method = "addEmployee">
<interceptor-ref name="jsonStack"></interceptor-ref>
<result type="json" />
</action>
</package>
</struts>
当我通过json数据&#34; {&#34; firstName&#34;:&#34; Hari&#34;,&#34; id&#34'调用动作&#34; addEmployee&#34; ; 123&#34; lastName的&#34;:&#34; assds&#34;}&#34;我得到了以下回复。我将内容类型设置为text / json。
{
"model": {
"firstName": null
"id": 0
"lastName": null
}-
}
我使用Advanced Rest Client发布数据。
答案 0 :(得分:-1)
当您将json数据从客户端发送到服务器时,将它们作为字符串发送,并在action类中创建一个普通的String变量来接收并保存json的字符串。
然后,您可以使用json解析器从字符串手动填充bean, 或者使用像google gson这样的lib,它具有用于此目的的内置功能。</ p>
Google Gson是一个Java序列化/反序列化库,可以将Java对象转换为JSON并返回。
您可以创建自己的struts拦截器来包装此进程或直接在您的操作类中实现它。