Jersey返回对象以json格式呈现,java.lang.ClassNotFoundException: org.codehaus.jackson.xc.Ja

本文介绍了一种在Jersey框架中优化JSON数据交互的方法,通过直接返回application/json格式的数据,简化了前后端的数据处理流程,并解决了一个常见的ClassNotFoundException问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       常用方式:在使用Jersey的过程中,与前端交互的数据大多是符合json格式的数据,然后前端使用eval方法把后台返回的符合json格式的String数据转换为json对象。其中的步骤大多是:

      1.前端访问后台,后台获取数据要么使用JsonObject工具把数据转换为json格式的字符串,或者手工拼接把数据拼接成符合json格式的字符串;

       2.前端获取到数据,然后使用eval方法把数据转换为json对象;

       更好的方式:其实Jersey提供了自动返回application/json格式的数据,使用这种方法既省去了后台手工转换数据的过程,也省去了前端把符合json格式的字符串转换为json对象的过程;但是在使用系统自带的jar时,第一次部署系统启动后调数据会报一个异常:java.lang.ClassNotFoundException: org.codehaus.jackson.xc.JaxbAnnotationIntrospector,其实产生这个问题的原因是系统自带的jar包太久了,有一些新的class类不存在,使用最新的或者合适的jar就解决了。

 

package returnJson;


public class Student {
	private String id;
	private String name;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
}

 

package returnJson;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;

@Path("student")
public class StudentResource {

	/**
	 * 返回json格式的数据
	 * 常用方式:@Produces("text/plain")
	 * 			 return 返回String,返回的是手工转换好的json字符串
	 * @return 返回对象,其实返回的是转换为key、value的json数据
	 */
	@GET
	@Path("get")
	@Produces("application/json")
	public Student getStudent() {
		Student student = new Student();
		student.setId("110");
		student.setName("police");
		/**
		 * return 返回String,返回的是手工转换好的json字符串
		 * JSONObject json = new JSONObject();
		 * json.accumulate("result", student);
		 * return json.toString();
		 */
		return student;
	}
	
	public static void main(String[] args) {
		Client client = Client.create();
		WebResource resource = client.resource("http://localhost:8888/JS/services/student/get");
		String str = resource.get(String.class);
		System.out.println(str);
	}
}

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <title>Jersey json测试</title>
  </head>
  <script type="text/javascript" src="./js/jquery-1.7.1.js"></script>
  <script type="text/javascript">
  	$(function() {
  		$.get('services/student/get', {}, function(result) {
  			alert(result.name);
  		}, 'json');
  		
  		//常用方式
  		//$.get('services/student/get', {}, function(result) {
  			//var data = eval('(' + result + ')');
  			//alert(data.result.name);
  		//});
  	});
  </script>
  <body>
    This is my JSP page. <br>
  </body>
</html>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

链诸葛

真爱了。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值