把实体 转为json 数据格式---jackson 的详细用法.
来源:互联网 发布:淘宝图书经营许可证 编辑:程序博客网 时间:2024/06/05 11:25
下载:http://www.oschina.net/p/jackson
首先介绍三个注解:
@JsonAutoDetect (method/field):作用于方法或字段,用来表明,当生成json的时候忽略有该annotation的方法或字段
@JsonIgnore 过滤不需要转成json的属性
@JsonIgnoreProperties 主要用于过滤掉一些不需要的属性
以上三个注解需要放在get方法前面才有效.
package
com.sw.entity.base;
import
static
javax.persistence.GenerationType.IDENTITY;
import
java.util.HashSet;
import
java.util.Set;
import
javax.persistence.CascadeType;
import
javax.persistence.Column;
import
javax.persistence.Entity;
import
javax.persistence.FetchType;
import
javax.persistence.GeneratedValue;
import
javax.persistence.Id;
import
javax.persistence.JoinColumn;
import
javax.persistence.ManyToOne;
import
javax.persistence.OneToMany;
import
javax.persistence.Table;
import
javax.persistence.Transient;
import
org.codehaus.jackson.annotate.JsonAutoDetect;
import
org.codehaus.jackson.annotate.JsonIgnore;
/**
* Menu entity. @author MyEclipse Persistence Tools
*/
@Entity
@Table
(name =
"menu"
, catalog =
"zhong"
)
@JsonAutoDetect
public
class
Menu
implements
java.io.Serializable {
// Fields
/**
*
*/
private
static
final
long
serialVersionUID = 1L;
private
Integer id;
private
Menu menu;
private
String icon;
private
String name;
private
Short seq;
private
String url;
private
String prem;
private
Set<Menu> menus =
new
HashSet<Menu>(
0
);
// Constructors
/**用于json输出的属性,不需要持久化;*/
private
String state =
"open"
;
/*********************************/
/** default constructor */
public
Menu() {
}
/** minimal constructor */
public
Menu(Integer id) {
this
.id = id;
}
/** full constructor */
//省略构造器
// Property accessors
/**省略了一下不需要处理的get/set方法*/
@JsonIgnore
//标记该属性不需要转为 json
@ManyToOne
(fetch = FetchType.LAZY)
@JoinColumn
(name =
"pid"
)
public
Menu getMenu() {
return
this
.menu;
}
public
void
setMenu(Menu menu) {
this
.menu = menu;
}
@JsonIgnore
//标记该属性不需要转为 json
@OneToMany
(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy =
"menu"
)
public
Set<Menu> getMenus() {
return
this
.menus;
}
public
void
setMenus(Set<Menu> menus) {
this
.menus = menus;
}
/*jackson就是根据get方法来获取属性值的,如果持久化的属性值不符合你的要求,
可以通过更改get方法来实现。
比如说你的实体里有个set<xxx> xxx;的属性,如果按照jackson原本的计划,集合类型会被转为json数组,但你想把这个集合的内容转成字符串,那么就可以通过get方法返回字符。或者说按照你的要求返回任何东西。*/
//这个是为了树形结构菜单标记字段,加上此注解表示该字段不需要持久化实体到数据库
@Transient
public
String getState() {
if
(
this
.getMenus()==
null
){
state =
"open"
;
}
else
{
state =
"closed"
;
}
return
state;
}
public
void
setState(String state) {
this
.state = state;
}
}
以下是转化代码:
List<Menu> menus = menuManager.getChildrenById(aid,"pid","seq",true); //从数据库取出list
ObjectMapper map = new ObjectMapper();//这是jackson的类库
map.writeValue(Struts2Utils.getResponse().getWriter(),menus); //输出json 这样就把json数据输出到浏览器客户端了。
以下是值:
[{"name":"dfdsf","id":1,"state":"closed","seq":999,"prem":"fsfsd","icon":"fff","url":"gfdsfds"},
{"name":"fdsfds","id":2,"state":"closed","seq":999,"prem":"fsdf","icon":"fff","url":"efdsfsd"}]
jackson常用转化形式:
writeValueAsString(value) 转化为String
writeValueAsBytes(value) 转化为byte
writeValue(objec0,bean) 此方法用于直接输出json数据,
objec0代表输出环境,可以是Response.getWriter()也可以是Outputstream.bean是要输出的数据,集合和单个bean都可以
0 0
- 把实体 转为json 数据格式---jackson 的详细用法.
- 把json转为实体对象
- 表格转为JSON数据格式
- DataTable转为JSON数据格式代码
- DataTable转为JSON数据格式代码
- Jackson的json转换和Jackson Annotations 基本用法
- 使用jackson工具类把对象或集合转为JSON格式
- Jackson第一篇【JSON字符串、实体之间的相互转换】
- Jackson第一篇【JSON字符串、实体之间的相互转换】
- Jackson第一篇【JSON字符串、实体之间的相互转换】
- Jackson第一篇【JSON字符串、实体之间的相互转换】
- Jackson 解析json的一些用法
- json数据格式,xml数据格式的区别和用法
- VS快速生成JSON数据格式对应的实体
- JSON 之 jackson 用法
- JackSon将一个对象转为Json字符串
- 详细的json用法
- js将object转为json数据格式(java)
- Maven系列--setting.xml文件
- spring mvc controller间跳转 重定向 传参
- RUP简介
- java 写文件的三种方法比较
- 【python】Python字符串md5加密
- 把实体 转为json 数据格式---jackson 的详细用法.
- OCP-1Z0-053-200题-18题-100
- Linux 服务器查看日志基本命令
- OCP-1Z0-053-200题-17题-99
- 不要随意重装Windows操作系统
- 内存管理与检测
- 关机充电百分比字体大小修改过程记录
- shell笔记
- android获得手机屏幕状态栏高度 屏幕高宽度