用Java开发webservise如何返回json数据

Cfan 2013-01-10 08:15:30
我用的工具是MyEclipse10.0,jar包都是开发工具内置的,我做的webServise都是返回xml数据的,求问如何能返回Json数据,客户端又该如何接受这些数据,求详细回答!!!谢谢大家啦!!!
...全文
989 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Grace_718 2014-11-25
  • 打赏
  • 举报
回复
我现在也在研究这个问题,楼主解决没有?可以发代码看看不?
Cfan 2013-01-10
  • 打赏
  • 举报
回复
谢谢楼上的回答,请问JSONArray在哪个包里?
黑夜里的黑猫 2013-01-10
  • 打赏
  • 举报
回复
java
PrintWriter out = null;
		System.out.println("\n正在使用json格式将结果传回客户端:"+uMap.get(responseMan));
		String jsonText = "[{\"result\":\"添加工作计划成功!\",\"id\":\""+planItem.getFiwpitemId()+
			"\",\"planDate\":\""+planDate+"\"," +
			"\"content\":\""+content+"\",\"responseMan\":\""+uMap.get(responseMan)+"\"}]";
//		jsonText = "[{\"result\":\"添加工作计划成功!\"}]";
		try {
			out = this.getResponse().getWriter();
			JSONArray jsonArray = JSONArray.fromObject(jsonText); 
//			out.print("{'result':'添加工作计划成功!','id':'"+planItem.getFiwpitemId()+"','planDate':'"+
//					new SimpleDateFormat("yyyy-MM-dd").format(planItem.getFdplanDate())+"'," +
//					"'content':'"+content+"','responseMan':'"+user.getFcname()+"'}");
			out.print(jsonArray);

//			out.print(arr.toString());
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			out.flush();
			out.close();
		}
客户端
	$.ajax({
		type:'post',//可选get
		url:'',//这里是接收数据的PHP程序
		data:{"planDate":datePlan,"content":content},//传给的数据,多个参数用&连接
		dataType:'json',//服务器返回的数据类型 可选XML ,Json jsonp script html text等
		success:function(result){
		result[0].planDate;
		result[0].id;
		result[0].content;
		result[0].responseMan
		//这里是ajax提交成功后,PHP程序返回的数据处理函数。msg是返回的数据,数据类型在dataType参数里定义!
		},
		error:function(){
		//ajax提交失败的处理函数!
		}
	});
Cfan 2013-01-10
  • 打赏
  • 举报
回复
ObjectMapper类 是不是要下载jar?
Cfan 2013-01-10
  • 打赏
  • 举报
回复
先谢谢你了,我午饭完后研究研究然后写个测试程序看看,成功了给分哈,如果还有相关问题我会继续发问的,还麻烦你耐心回答
失落夏天 2013-01-10
  • 打赏
  • 举报
回复
当然,还有一种Objectfrom的方法,也挺好用。 例子就不发了
失落夏天 2013-01-10
  • 打赏
  • 举报
回复
把数据转一下就成了json格式的了。 javaBean转成json

public class JavaBeanToJson {
	public static void main(String[] args) {
		ArrayList<Student> list=new ArrayList<Student>();
		Student s1=new Student();
		s1.setName("leilei");
		s1.setAge(23);
		Student s2=new Student();
		s2.setName("leilei02");
		s2.setAge(23);
		list.add(s1);
		list.add(s2);
		
		StringWriter str=new StringWriter();
		
		ObjectMapper objectMapper=new ObjectMapper();
		try {
			objectMapper.writeValue(str, list);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}	
		System.out.println(str);
	}
}
json返回javaBean

public class JsonToJavaBean {
	public static void main(String[] args) {
		String str="{\"student\":[{\"name\":\"leilei\",\"age\":23,\"gender\":true},{\"name\":\"leilei02\",\"age\":23,\"gender\":false}]}";
		Student stu = null;
		List<Student> list = null;
		try {
			ObjectMapper objectMapper=new ObjectMapper();
			StudentList studentList=objectMapper.readValue(str, StudentList.class);
			
			list=studentList.getStudent();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
		for(Student s:list){
			System.out.println(s.getName()+"   "+s.getAge()+"      "+s.isGender());
		}
	}
}
青柠loft 2013-01-10
  • 打赏
  • 举报
回复
关注下~!坐等高手解答
herminen 2013-01-10
  • 打赏
  • 举报
回复
引用 7 楼 senliu1506 的回复:
谢谢楼上的回答,请问JSONArray在哪个包里?
百度搜索json-lib
1. 模块命名、数据库表命名、域模型命名、各分层的类/方法命名、页面的命名; 模块命名: a. 包命名:com.project_name.module_name.action/service/dao/ws; service的实现都置于com.project_name.module_name.service.impl下; b. 接口命名遵守XxxxService,接口实现遵守XxxxServiceImpl; 2. 包的设计、页面的层次结构设计(jsp/css/js等文件的结构); 3. log、异常(声明式异常)的约定设计; 4. 链接、按钮、表单提交的统一方式;通用式Ajax调用与页面跳转统一模型; 5. 响应一个请求的分层结构约定,列举几个示例(常规调用、Ajax调用、WebService调用、提供WebService暴露、硬件设备接口调用); 6. 验证代码质量的约定,如JUnit、EMMA、FindBugs、CheckStyle、PMD的使用;Hudson持续集成需注意的; 7. 压力测试、防内存泄漏测试; 基础CSS:标签的各种状态的样式;表格单双行的样式; 开发一个Action请求的响应: 前置条件:该Action涉及的Entity及EntityName.hbm.xml已经准备好。 步骤: a. 前端页面触发Action的请求; 统一采用全路径请求,URL格式: 1> basePath/web/moduleName/*_ *.action {1}  EntityName,{2}  ActionMethodName 2> basePath/web/moduleName/gotoXxx.action (无需调用Service,直接跳转) 包括jQuery的Ajax方式和非Ajax方式; 包括表单提交; 参数设值的方式: 1> URL参数: basePath/web/moduleName/*_*.action?entity.propertyName=paramValue¶mName=paramValue 2> 或 另外,对于表单的提交,前后台都必须做数据校验,SWDF已提供了此能力,进行简单的配置即可,前台直接提供类似以下代码即可,点此查看前端校验详细规则说明。 前端校验示例; 后台数据校验,点此查看校验详细说明. b. 配置struts-moduleName.xml; 直接跳转示例; 调用Service示例; c. 开发对应的{EntityName}Action类; 该类必须继承com.hikvision.swdf.xx.BaseAction,该Action类有一个关键属性entity,即泛型Entity类的一个实体,该属性默认填充好了请求提交过来的entity对应参数(即entity.propertyName); d. 开发Service接口和Service接口实现,并在Action中通过set方法注入该Service; 接口文件:UserService 接口实现:UserServiceImpl 注入Service e. 开发DAO,DAO继承com.hikvision.xxx.HibernateBaseDAO; 示例 f. 配置applicationContext-*.xml; 配置DAO bean、Service Bean、Action Bean及注入的配置; g. 测试; 备注: 1. Action建议统一遵守通配符的约定,basePath/web/moduleName/*_ *.action {1}  EntityName,{2}  ActionMethodName 2. 统一命名规则:接口类似UserService,接口实现类型UserServiceImpl;(IUserService和UserServiceImpl) 开发一个Action调用关联应用提供的WebService 前置条件:该WebService?WSDL可正常获取 步骤: a. 配置applicationContext-wsclient.xml; Spring管理第三方WebService实例bean Jaxws-client配置代码 b. 生成第三方WebService接口文件;(提供系统自动生成) 自动生成代码 c. 页面调用Action请求,Action中注入WebService实例bean; Action对应方法直接调用第三方WebService的相关方法; d. 测试; 备注: 1. 步骤b,接口文件必须同包名同类名置于src目录下; 开发一个Action调用关联应用开放的HTTP请求 步骤: 1. 页面调用Action请求; 2. Action类相应方法使用封装好的HttpClient相关工具类,准备好HTTP请求的相关参数header参数和body参数并以xml的方式提交HTTP请求; 3. 解析该HTTP请求返回值(XML或JSON); 4. 响应结果; 5. 测试; 备注: 开发一个需要对第三方应用发布的WebService 步骤: a. 开发WebService接口,@WebService进行注解该接口; b. 开发WebService接口实现类,@WebService注解该实现类,并制定endpointInterface; c. 配置applicationContext-ws.xml d. 测试 备注: 开发一个需要对第三方应用发布的RESTful Service 步骤: a. 开发RS接口,提供如下Annotation; b. 开发RS接口实现,并提供如下Annotation; c. 配置applicationContext-rs.xml 备注: 所有Annotation的涵义解释如下:

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧