struts2 怎么接收客户端的json格式数据
大虾们.
struts2 怎么接收客户端的json格式数据?
接收后,怎么去解释数据???
[解决办法]
加一个整合包(jsonplugin.jar),就行普通用法一样。
页面:
<s:text name="user.name"/>
后会自动传到 action 中user对象的name属性
[解决办法]
JSON可使用专门的java包解释
import org.json.*;
可以和web传送的相关json对象相互转化
从requst取
String strJson = request.getParameter("jsonRequest");
可以进一步封装为JSON对象并进行必要的编码处理
strJson = decodeJSON(strJson, request.getCharacterEncoding())
自定义的转化 Map --> JSONObject
public static final JSONObject getJSONColumns(Map columnInfos)
{
JSONObject jsonColumns = new JSONObject();
for(Iterator entryIter = columnInfos.entrySet().iterator(); entryIter.hasNext();)
{
java.util.Map.Entry entryColumn = (java.util.Map.Entry)entryIter.next();
String columnId = (String)entryColumn.getKey();
ColumnInfo columnInfo = (ColumnInfo)entryColumn.getValue();
JSONObject jsonColumn = getJSONColumn(columnInfo);
try
{
jsonColumns.put(columnId, jsonColumn);
}
catch(JSONException je)
{
logger.error(je.getMessage(), je);
}
}
return jsonColumns;
}
[解决办法]
客户端 AJAX(jquery版本):
$.post(url,{name:"张山",age:20},function(data){});
从这里面可以看到:
参数 {name:"张山",age:20} 是一个 json 对象,
其实后台 action 接受很接单,只需要定义 两个变量, name,age,然后生成get/set就可以了,
PS:所谓的json 不过就 key:value 的形式, 前端json 有多少个key,你action里定义多少个 变量就够了
没什么其他的东东...
[解决办法]
//保存资源(多个)
public void doSavaResource(String data) {
JSONArray array = JSONArray.fromObject(data);
for (Object object : array) {
JSONObject json = (JSONObject)object;
ResourceBean resourceBean = (ResourceBean) JSONObject.toBean(json,ResourceBean.class);
if(resourceBean.getId() != null){
Resource resource = this.resourceDAO.get(resourceBean.getId());
//BeanUtils.copyProperties(resourceBean, resource);
resource.setComponent(resourceBean.getComponent());
resource.setDescription(resourceBean.getDescription());
resource.setIcon(resourceBean.getIcon());
resource.setName(resourceBean.getName());
resource.setSort(resourceBean.getSort());
resource.setType(resourceBean.getType());
if(resourceBean.getParent() == null){
resource.setParent(null);
}
this.resourceDAO.update(resource);
}else{
Resource resource = new Resource(resourceBean);
if(resourceBean.getParent() == null){
resource.setParent(null);
}else{
resource.setParent(this.resourceDAO.get(resourceBean.getParent()));
}
this.resourceDAO.save(resource);
}
}
}