论坛首页 入门技术论坛

Java与json 的序列化与反序列化

浏览 9197 次
该帖已经被评为新手帖
作者 正文
   发表时间: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;
		// }
		//    	  
		// }
		// );

	}
}

 

 

   发表时间:2010-04-19  
序列化不是指Java对象和json对象的转换吧,标题改一下免得误解
0 请登录后投票
   发表时间:2010-04-19  
我想序列化与反序列化应该是在Swing中用得比较频繁吧?  现在javaee中,都没这个概念.,.!!
0 请登录后投票
   发表时间:2010-04-19  
帖子标题不够严谨,。。。。
0 请登录后投票
   发表时间:2010-04-20  
对不起,在文中 jsontools是什么呢?相对其他的jsonlib gjson等有什么优势,如果没优势为什么还要重复创轮呢?谢谢
0 请登录后投票
   发表时间:2010-04-20  
序列化有特殊含义的
还是叫做JSON化和反JSON化吧
0 请登录后投票
   发表时间:2010-04-20  
拜托!序列化用在这一点问题都没有
0 请登录后投票
   发表时间:2010-04-20  
EldonReturn 写道
序列化有特殊含义的
还是叫做JSON化和反JSON化吧

你说的那个有特殊含义的序列化也是可以用JSON实现的
0 请登录后投票
   发表时间:2010-04-21  
whaosoft 写道
帖子标题不够严谨,。。。。

序列化的定义就是将对象存储到硬盘里,反序列化就是将硬盘里的对象加载到内存中,不管是json 还是 xml 还是二进制流的方式,所达到的目的是一样的!
1 请登录后投票
   发表时间:2010-12-01  
序列化就是将对象的状态信息转化为可以传输或者存储的状态,所以object-json,完全是一个序列化的过程
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics