jersey - json(jsonp 跨域)格式交互

简介: JacksonFeature.class 在使用Tomcat作为HttpServer时,需要特别注意,实现java对象到json的解析时必须注册到JacksonFeature类,自己写的MyProvider不行。 //自己写MyProvider 不能用,不知道为什么@Providerpublic class MyProvider implements ContextResolv

JacksonFeature.class

在使用Tomcat作为HttpServer时,需要特别注意,实现java对象到json的解析时必须注册到JacksonFeature类,自己写的MyProvider不行。

//自己写MyProvider 不能用,不知道为什么
@Provider
public class MyProvider implements ContextResolver<ObjectMapper> {
	public ObjectMapper getContext(final Class<?> type) {
		final ObjectMapper mapper=new ObjectMapper();
		return mapper ;
	}
}

class JacksonFeature所在的jar为jersey-media-json-jackson-2.5.jar,这个jar只有它一个类。


它的maven依赖为:

<dependency>
	<groupId>org.glassfish.jersey.media</groupId>
	<artifactId>jersey-media-json-jackson</artifactId>
	<version>2.5</version>
</dependency>

主文件写法见下:

package com.likeyichu.webservice;

import org.glassfish.jersey.jackson.JacksonFeature;
import org.glassfish.jersey.server.ResourceConfig;

public class App extends ResourceConfig {
<span style="white-space:pre">	</span>public  App() {
<span style="white-space:pre">		</span>//向jersey框架注册资源类,凡完全限定名是以指定字符串开头的类,都将包含
<span style="white-space:pre">		</span>packages("com.likeyichu.webservice");
<span style="white-space:pre">		</span>register(JacksonFeature.class);
<span style="white-space:pre">	</span>}
}


getter()

要序列化为json的对象应该实现setter与getter方法。可以定义完成员变量后用Eclipse自动生成,见下图。


效果


注意

若一个类想要被序列化,必须有public 权限。
加@Produces标注的函数,函数名不要以“get”开头,不然jackson会无穷递归下去。

jersey-jsonp

@org.glassfish.jersey.server. JSONP
jersey框架帮我们返回jsonp格式的内容。一个实例:
@Path("jsonp")
	@GET
	@JSONP(queryParam="callback")//返回的函数名与http请求中的callback参数的值一致
	@Produces("application/x-javascript")  	//这里最好写成application/x-javascript
	public Student wsStudent2( ) {
		return new Student();
	}
效果:

jersey-post

@Path("post")
	@POST
	@Consumes(MediaType.APPLICATION_JSON)  //因为这行,wsStudent3()的形参remoteStudent会被jersey注入
	@Produces(MediaType.APPLICATION_JSON)
	public Student wsStudent3(Student remoteStudent) {
		Student student= new Student();
		student.setName(student.getName()+remoteStudent.getName());
		return student;
	}



目录
相关文章
|
3月前
|
XML 存储 JSON
Python学习 -- 常用数据交换格式(CSV、XML、JSON)
Python学习 -- 常用数据交换格式(CSV、XML、JSON)
31 0
|
4月前
|
JSON JavaScript 数据格式
JS 将 json 对象转成字符串并保留格式 - JSON.stringify()
JS 将 json 对象转成字符串并保留格式 - JSON.stringify()
61 0
|
2月前
|
XML 机器学习/深度学习 JSON
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
29 0
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
|
4天前
|
存储 JSON NoSQL
MongoDB的文档存储格式BSON和JSON的区别
MongoDB的文档存储格式BSON和JSON的区别
|
4月前
|
XML JSON Java
Android App网络通信中通过okhttp调用HTTP接口讲解及实战(包括GET、表单格式POST、JSON格式POST 附源码)
Android App网络通信中通过okhttp调用HTTP接口讲解及实战(包括GET、表单格式POST、JSON格式POST 附源码)
143 0
|
15天前
|
JSON C语言 数据格式
C语言与lua通过json对象交互
C语言与lua通过json对象交互
11 1
|
15天前
|
XML JSON JavaScript
使用JSON和XML:数据交换格式在Java Web开发中的应用
【4月更文挑战第3天】本文比较了JSON和XML在Java Web开发中的应用。JSON是一种轻量级、易读的数据交换格式,适合快速解析和节省空间,常用于API和Web服务。XML则提供更强的灵活性和数据描述能力,适合复杂数据结构。Java有Jackson和Gson等库处理JSON,JAXB和DOM/SAX处理XML。选择格式需根据应用场景和需求。
|
2月前
|
JSON fastjson Java
FastJSON操作各种格式的JSON数据
FastJSON处理各种格式的JSON数据
|
2月前
|
JSON C# 数据格式
C# 处理gzip格式的json
C# 处理gzip格式的json
19 0
|
3月前
|
JSON 数据格式
将json格式的数据快速转换为excel,使用在线工具轻松搞定
将json格式的数据快速转换为excel,使用在线工具轻松搞定
114 0