浏览 9197 次
锁定老帖子 主题:Java与json 的序列化与反序列化
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-04-19
jsontools 工具包可以将Java对象转化成json对象,也可以讲jsonString 转化成Java对象,转化的过程十分方便。 注意:1.对象必需实现默认的构造函数,因为jsontools在解析的时候使用了反射实例化属性对象, 2.必需给属性提供get,set 方法,因为jsontools 使用了内省获得属性值。
public class Blog { private Author writer; private List<Entry> entries = new ArrayList<Entry> (); public Blog() { super(); } public Blog(Author writer) { this.writer = writer; } public void add(Entry entry) { entries.add(entry); } public Author getWriter() { return writer; } public void setWriter(Author writer) { this.writer = writer; } public List<Entry> getEntries() { return entries; } public void setEntries(List<Entry> entries) { this.entries = entries; } }
public class Author { private String name; public Author() { super(); } public Author(String name) { this.name = name; } public String getName() { return name; } }
public class Entry { private String title, description; public Entry() { super(); } public Entry(String title, String description) { this.title = title; this.description = description; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } }
public static void main(String[] args) throws Exception { try { Object o = Blog.class.newInstance(); } catch (Exception e) { e.printStackTrace(); } Blog teamBlog = new Blog(new Author("Guilherme Silveira")); teamBlog.add(new Entry("first", "My first blog entry.")); teamBlog .add(new Entry("tutorial", "Today we have developed a nice alias tutorial. Tell your friends! NOW!")); // 序列化 JSONValue jsonValue = JSONMapper.toJSON(teamBlog); String jsonStr = jsonValue.render(true); // 是否格式化 System.out.println(jsonStr); // 反序列化 JSONParser parser = new JSONParser(new StringReader(jsonStr)); // JSONObject.decorate(anObject) Blog b = (Blog) JSONMapper.toJava(parser.nextValue(), Blog.class); System.out.println(b); // Blog b = (Blog)JSONMapper.toJava(parser.nextValue(), // new ParameterizedType(){ // // @Override // public Type[] getActualTypeArguments() { // // return null; // } // // @Override // public Type getOwnerType() { // // return null; // } // // @Override // public Type getRawType() { // // return null; // } // // } // ); } }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-04-19
序列化不是指Java对象和json对象的转换吧,标题改一下免得误解
|
|
返回顶楼 | |
发表时间:2010-04-19
我想序列化与反序列化应该是在Swing中用得比较频繁吧? 现在javaee中,都没这个概念.,.!!
|
|
返回顶楼 | |
发表时间:2010-04-19
帖子标题不够严谨,。。。。
|
|
返回顶楼 | |
发表时间:2010-04-20
对不起,在文中 jsontools是什么呢?相对其他的jsonlib gjson等有什么优势,如果没优势为什么还要重复创轮呢?谢谢
|
|
返回顶楼 | |
发表时间:2010-04-20
序列化有特殊含义的
还是叫做JSON化和反JSON化吧 |
|
返回顶楼 | |
发表时间:2010-04-20
拜托!序列化用在这一点问题都没有
|
|
返回顶楼 | |
发表时间:2010-04-20
EldonReturn 写道 序列化有特殊含义的
还是叫做JSON化和反JSON化吧 你说的那个有特殊含义的序列化也是可以用JSON实现的 |
|
返回顶楼 | |
发表时间:2010-04-21
whaosoft 写道 帖子标题不够严谨,。。。。
序列化的定义就是将对象存储到硬盘里,反序列化就是将硬盘里的对象加载到内存中,不管是json 还是 xml 还是二进制流的方式,所达到的目的是一样的! |
|
返回顶楼 | |
发表时间:2010-12-01
序列化就是将对象的状态信息转化为可以传输或者存储的状态,所以object-json,完全是一个序列化的过程
|
|
返回顶楼 | |