当前位置:编程学习 > JS >>

Jackson 框架,轻易转换JSON

测试类基本代码如下
 
[java]  
package com.hoo.test;  
   
import java.io.IOException;  
import java.io.StringWriter;  
import java.util.ArrayList;  
import java.util.HashMap;  
import java.util.Iterator;  
import java.util.LinkedHashMap;  
import java.util.List;  
import java.util.Map;  
import java.util.Set;  
import org.codehaus.jackson.JsonEncoding;  
import org.codehaus.jackson.JsonGenerationException;  
import org.codehaus.jackson.JsonGenerator;  
import org.codehaus.jackson.JsonParseException;  
import org.codehaus.jackson.map.JsonMappingException;  
import org.codehaus.jackson.map.ObjectMapper;  
import org.codehaus.jackson.node.JsonNodeFactory;  
import org.codehaus.jackson.xml.XmlMapper;  
import org.junit.After;  
import org.junit.Before;  
import org.junit.Test;  
import com.hoo.entity.AccountBean;  
   
/** 
 * <b>function:</b>Jackson 将java对象转换成JSON字符串,也可以将JSON字符串转换成java对象 
 * jar-lib-version: jackson-all-1.6.2 
 * jettison-1.0.1 
 * @author hoojo 
 * @createDate 2010-11-23 下午04:54:53 
 * @file JacksonTest.java 
 * @package com.hoo.test 
 * @project Spring3 
 * @blog http://blog.csdn.net/IBM_hoojo 
 * @email hoojo_@126.com 
 * @version 1.0 
 */  
@SuppressWarnings("unchecked")  
public class JacksonTest {  
    private JsonGenerator jsonGenerator = null;  
    private ObjectMapper objectMapper = null;  
    private AccountBean bean = null;  
      
    @Before  
    public void init() {  
        bean = new AccountBean();  
        bean.setAddress("china-Guangzhou");  
        bean.setEmail("hoojo_@126.com");  
        bean.setId(1);  
        bean.setName("hoojo");  
          
        objectMapper = new ObjectMapper();  
        try {  
            jsonGenerator = objectMapper.getJsonFactory().createJsonGenerator(System.out, JsonEncoding.UTF8);  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
    }  
      
    @After  
    public void destory() {  
        try {  
            if (jsonGenerator != null) {  
                jsonGenerator.flush();  
            }  
            if (!jsonGenerator.isClosed()) {  
                jsonGenerator.close();  
            }  
            jsonGenerator = null;  
            objectMapper = null;  
            bean = null;  
            System.gc();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
    }  
}  
  所需要的JavaEntity
 
[java]  
package com.hoo.entity;  
   
public class AccountBean {  
    private int id;  
    private String name;  
    private String email;  
    private String address;  
    private Birthday birthday;  
      
    //getter、setter  
      
    @Override  
    public String toString() {  
        return this.name + "#" + this.id + "#" + this.address + "#" + this.birthday + "#" + this.email;  
    }  
}  
Birthday  
  
package com.hoo.entity;  
   
public class Birthday {  
    private String birthday;  
      
    public Birthday(String birthday) {  
        super();  
        this.birthday = birthday;  
    }  
   
    //getter、setter  
   
    public Birthday() {}  
      
    @Override  
    public String toString() {  
        return this.birthday;  
    }  
}  
二、Java对象转换成JSON
  JavaBean(Entity/Model)转换成JSON
 
 
[java]  
/** 
 * <b>function:</b>将java对象转换成json字符串 
 * @author hoojo 
 * @createDate 2010-11-23 下午06:01:10 
 */  
@Test  
public void writeEntityJSON() {  
      
    try {  
        System.out.println("jsonGenerator");  
        //writeObject可以转换java对象,eg:JavaBean/Map/List/Array等  
        jsonGenerator.writeObject(bean);      
        System.out.println();  
          
        System.out.println("ObjectMapper");  
        //writeValue具有和writeObject相同的功能  
        objectMapper.writeValue(System.out, bean);  
    } catch (IOException e) {  
        e.printStackTrace();  
    }  
}  
运行后结果如下:
 
jsonGenerator
{"address":"china-Guangzhou","name":"hoojo","id":1,"birthday":null,"email&quo
补充:web前端 , JavaScript ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,