java中用到json,java中的JSON运用

本文介绍了在Java中如何使用json-lib库将业务逻辑层的数据转化为JSON格式的字符串,并在JSP页面中进行解析和展示。主要步骤包括:1) 引入json-lib及其依赖;2) 在Java中构建JSON字符串;3) JSP页面解析JSON并生成表格;4) 通过请求参数传递JSON数据到后台处理。后台接收到JSON后,解析并映射到对应的实体对象。
摘要由CSDN通过智能技术生成

java中的JSON使用

1、json的官网:http://www.json.org/

2、使用java的jar包:http://json-lib.sourceforge.net/

这个包依赖的东西比较多,官网介绍如下:

Json-lib requires (at least) the following dependencies in your classpath:

jakarta commons-lang 2.5

jakarta commons-beanutils 1.8.0

jakarta commons-collections 3.2.1

jakarta commons-logging 1.1.1

ezmorph 1.0.6

3、从业务逻辑层获取数据形成json格式的字符串

//stageList就是我们从业务逻辑层中获取的数据

private String parseStageToStr(List stageList) {

StringBuilder sb = new StringBuilder(200);

if(CollectionUtils.isEmpty(stageList)) {

return "";

}

int size = stageList.size();

for(int i = 0; i < size; i++) {

Stage s = stageList.get(i);

sb.append(s.getStageId() + ":{");

StringBuilder tmp = new StringBuilder(200);

tmp.append("projectId:\""+ (s.getProjectId())+"\",");

tmp.append("subProjectId:\""+(s.getSubProjectId())+"\",");

tmp.append("stageNameId:\""+(s.getStageNameId())+"\",");

tmp.append("psName:\"" + (s.getPsName()==null?"":s.getPsName())+"\",");

tmp.append("planFromDate:\"" + (DateUtil.dateToStr(s.getPlanFromDate()))+"\",");

tmp.append("planToDate:\"" + (DateUtil.dateToStr(s.getPlanToDate()))+"\",");

tmp.append("stageLogId:\"" + (s.getStageLogId())+"\"");

//tmp.append("departmentIds:\""+(s.getDepartmentIds()==null?"":s.getDepartmentIds())+"\"");

sb.append(tmp);

sb.append("}");

if(i < size -1) {

sb.append(",");

}

}

return sb.toString();

}

4、在jsp页面中,解析json字符串

a)上面封装的json数据格式:{"265":{projectId:"0",subProjectId:"126",stageNameId:"1",psName:"2",planFromDate:"",planToDate:"",stageLogId:"100"},"270":{projectId:"0",subProjectId:"126",stageNameId:"1",psName:"",planFromDate:"",planToDate:"",stageLogId:"100"},"268":{projectId:"0",subProjectId:"126",stageNameId:"1",psName:"",planFromDate:"",planToDate:"",stageLogId:"100"}}

b)js中使用

var json = {};

//alert('');

function initTbody(){

var str = '';

for(var k in json){

var v = json[k];

var tr = '

';

var stages = v.stages, idx = 0;

for(var m in stages){

tr += '

';

}

5、jsp页面通过**.action?jsonParam="这里是json格式的数据"传入到逻辑层处理

/**

* 解析json数据

* @param str//格式:{"265":{projectId:"0",subProjectId:"126",stageNameId:"1",psName:"2",planFromDate:"",planToDate:"",stageLogId:"100"},"270":{projectId:"0",subProjectId:"126",stageNameId:"1",psName:"",planFromDate:"",planToDate:"",stageLogId:"100"},"268":{projectId:"0",subProjectId:"126",stageNameId:"1",psName:"",planFromDate:"",planToDate:"",stageLogId:"100"}}

* @return

* 2012-5-2 下午10:14:24

*/

private List parseStageJson(String str) {

List stageList = new ArrayList();

if(StringUtils.isEmpty(str)) return stageList;

JSONObject array = JSONObject.fromObject(str);

Iterator keys = array.keys();

while(keys.hasNext()) {

String key = keys.next();

System.out.println(key);

JSONObject value = array.getJSONObject(key);

Stage stage = new Stage();

try {

stage.setStageId(Integer.valueOf(key));

} catch (Exception e) {

Log.log(0, "新增");

}

Project project = new Project();

project.setProjectId(value.getInt("projectId"));

stage.setProject(project);

SubProject subProject = new SubProject();

subProject.setSubProjectId(value.getInt("subProjectId"));

stage.setSubProject(subProject);

StageName stageName = new StageName();

stageName.setStageNameId(value.getInt("stageNameId"));

stage.setStageName(stageName);

stage.setPsName(value.getString("psName"));

String planFromDate = value.getString("planFromDate");

if(StringUtils.isNotEmpty(planFromDate)) {

stage.setPlanFromDate(DateUtil.strToDate(planFromDate, "yyyy-MM-dd"));

}

String planToDate = value.getString("planToDate");

if(StringUtils.isNotEmpty(planToDate)) {

stage.setPlanToDate(DateUtil.strToDate(planToDate, "yyyy-MM-dd"));

}

String stageLogId = value.getString("stageLogId");

StageLog stageLog = new StageLog();

if(StringUtils.isNotEmpty(stageLogId)) {/

stageLog.setStageLogId(Integer.valueOf(stageLogId));

stage.setStageLog(stageLog);

} else {

this.setNewStage("1");

}

/*String departmentIds = value.getString("departmentIds");

stage.setDepartmentIds(departmentIds);*/

stageList.add(stage);

}

return stageList;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值