struts2 怎么接收客户端的json格式数据 大虾们.struts2 怎么接收客户端的json格式数据?接收后,怎么去解释数据??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 客户端发过来的是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 --> JSONObjectpublic 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); } } }思路:如果是单个对象,解析成JSONObject,如果是一个串就解析成JSONArray 找答案 发现上面回答都木有理解楼主意思楼主的意思是 怎样得到客户端传过来的json数据 不管格式是啥 发现楼上都说的解析的和传入的 只要获取到传过来的数据了,想咋办就咋办了 struts2异常捕获映射 为什么不行? SimpleJdbcTemplate返回更新成功,数据库却没有更新 JDK struts 配置 filter好似不起作用.. struts2 如何遍历list http://localhost:8080 真正菜鸟求助:如何用HIbernate写一个通用性高的查询语句 用ant打包如何指定jar运行的主要类(Main-Class)? 为什么我用jbuilder8写jsp时候编译就出错是怎么回事? 怎樣一步把JDK&APACHE&Oralce嚴格按順序安裝好 基础问题 用户登录 struts2往后台传值的问题,急!!!!!!!!!!!!!!!!!!
页面:
<s:text name="user.name"/>
后会自动传到 action 中user对象的name属性
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;
}
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);
}
}
}思路:如果是单个对象,解析成JSONObject,如果是一个串就解析成JSONArray