把实体 转为json 数据格式---jackson 的详细用法.
2013-01-06 13:28
417 查看
下载:http://www.oschina.net/p/jackson
首先介绍三个注解:
@JsonAutoDetect (method/field):作用于方法或字段,用来表明,当生成json的时候忽略有该annotation的方法或字段
@JsonIgnore 过滤不需要转成json的属性
@JsonIgnoreProperties 主要用于过滤掉一些不需要的属性
以上三个注解需要放在get方法前面才有效.
以下是转化代码:
List<Menu> menus = menuManager.getChildrenById(aid,"pid","seq",true); //从数据库取出list
ObjectMapper map = new ObjectMapper();//这是jackson的类库
map.writeValue(Struts2Utils.getResponse().getWriter(),menus); //输出json 这样就把json数据输出到浏览器客户端了。
以下是值:
首先介绍三个注解:
@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都可以
相关文章推荐
- 把实体 转为json 数据格式---jackson 的详细用法.
- asp.net和Jquery中详细解析json数据格式!(有实例)
- Android数据格式解析对象JSON用法
- Android-数据格式解析对象JSON用法
- 4.使用Jackson将Json数据转换成实体数据
- 久违的json使用大法 (通常Ajax希望返回多个键值对,可以用将要返回的数据先封装到一个对象中,再将这个对象转为json格式)
- 一种将数据表DataTable转为JSON格式的新方法
- JSON、JAVA互转与将页面中改变的数据转为json格式
- Android数据格式解析对象JSON用法
- Android数据格式解析对象JSON用法
- 我们常常会从网络获取数据,而数据通常又为JSON格式,JSON数据转为Model对象
- java对象、List转为json格式的数据
- 将数据表DataTable转为压缩JSON格式
- Android数据格式解析对象JSON用法
- js将object转为json数据格式(java)
- java对象、List转为json格式的数据
- Android数据格式解析对象JSON用法
- VS快速生成JSON数据格式对应的实体
- 使用Jackson 将json格式的list集合 解析成list集合格式的数据
- DataTable转为JSON数据格式代码