首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

struts2 如何接收客户端的json格式数据

2013-07-08 
struts2 怎么接收客户端的json格式数据大虾们.struts2 怎么接收客户端的json格式数据?接收后,怎么去解释数

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);

}
}
}


思路:如果是单个对象,解析成JSONObject,如果是一个串就解析成JSONArray

热点排行