首页 > 代码库 > jackson将java对象转换为json字符串

jackson将java对象转换为json字符串

1.1.  下载jackson

Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。相比json-lib框架,Jackson所依赖的jar包较少,简单易用并且性能也要相对高些。而且Jackson社区相对比较活跃,更新速度也比较快。

下载地址: http://jackson.codehaus.org/1.7.6/jackson-all-1.7.6.jar

1.2.  Java对象转换为json

Person.java

package jackson;

 

import java.io.Serializable;

 

public class Person implements Serializable{

 

    /**

     *

     */

    private static final long serialVersionUID = 1L;

   

    private Stringname;

   

    private Stringage;

 

    @Override

    public String toString() {

       return"Person [name=" + name + ", age=" + age + ", sex=" + sex + "]";

    }

 

    public Person() {

       super();

       // TODO Auto-generated constructor stub

    }

 

    private Stringsex;

 

    public Person(String name, String age, String sex) {

       super();

       this.name = name;

       this.age = age;

       this.sex = sex;

    }

 

    public String getName() {

       returnname;

    }

 

    public void setName(String name) {

       this.name = name;

    }

 

    public String getAge() {

       returnage;

    }

 

    public void setAge(String age) {

       this.age = age;

    }

 

    public String getSex() {

       returnsex;

    }

 

    public void setSex(String sex) {

       this.sex = sex;

    }

 

}

 

Java2json.java

package jackson;

 

import java.io.IOException;

 

import org.codehaus.jackson.JsonEncoding;

import org.codehaus.jackson.JsonGenerator;

import org.codehaus.jackson.map.ObjectMapper;

 

public class Java2Json {

 

   public static void main(String[] args) throws IOException {

 

      ObjectMapper mapper = new ObjectMapper();

     

      JsonGenerator generator = mapper.getJsonFactory().createJsonGenerator(System.out,JsonEncoding.UTF8);

     

      Person person = new Person();

      person.setName("morris");

      person.setAge("22");

      person.setSex("男");

     

      generator.writeObject(person);

     

      System.out.println("----------------");

 

      mapper.writeValue(System.out, person);

     

   }

 

}

运行结果如下:

{"sex":"男","age":"22","name":"morris"}----------------

{"sex":"男","age":"22","name":"morris"}

上面分别利用JsonGenerator的writeObject方法和ObjectMapper的writeValue方法完成对Java对象的转换,二者传递的参数及构造的方式不同;JsonGenerator的创建依赖于ObjectMapper对象。也就是说如果你要使用JsonGenerator来转换JSON,那么你必须创建一个ObjectMapper。但是你用ObjectMapper来转换JSON,则不需要JSONGenerator。

1.3.  Map集合转换为json

Map2Json.java

package jackson;

 

import java.io.IOException;

import java.util.HashMap;

import java.util.Map;

 

import org.codehaus.jackson.map.ObjectMapper;

 

public class Map2Json {

 

   public static void main(String[] args)throws IOException {

      Map<String, String> map = new HashMap<String, String>();

 

      map.put("name", "morris");

      map.put("age", "22");

      map.put("address", "hk");

 

      ObjectMapper mapper = new ObjectMapper();

      String jsonString = mapper.writeValueAsString(map);

 

      System.out.println(jsonString);

   }

 

}

 

运行结果如下:

{"address":"hk","age":"22","name":"morris"}

 

1.4.  List集合转换为json

List2json.java

package jackson;

 

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

 

import org.codehaus.jackson.JsonEncoding;

import org.codehaus.jackson.JsonGenerator;

import org.codehaus.jackson.map.ObjectMapper;

 

public class List2Json {

 

    public static void main(String[] args)throws IOException {

 

       List<String> list = new ArrayList<String>();

      

       list.add("name");

       list.add("age");

       list.add("address");

       list.add("sex");

      

       ObjectMapper mapper = new ObjectMapper();

      

       JsonGenerator generator = mapper.getJsonFactory().createJsonGenerator(System.out,JsonEncoding.UTF8);

      

       generator.writeObject(list);

       System.out.println();

       System.out.println("----------------");

       //直接将集合转换为json字符串

       System.out.println(mapper.writeValueAsString(list));

      

       mapper.writeValue(System.out, list);

    }

 

}

 

运行结果如下:

["name","age","address","sex"]

----------------

["name","age","address","sex"]

["name","age","address","sex"]

1.5.  其他对象转换为json

Other2Json.java

package jackson;

 

import java.io.IOException;

 

import org.codehaus.jackson.JsonEncoding;

import org.codehaus.jackson.JsonGenerator;

import org.codehaus.jackson.map.ObjectMapper;

import org.codehaus.jackson.node.JsonNodeFactory;

 

public class Other2Json {

 

   public static void main(String[] args)throws IOException {

     

      ObjectMapper mapper = new ObjectMapper();

     

      JsonGenerator jsonGenerator = mapper.getJsonFactory().createJsonGenerator(System.out,JsonEncoding.UTF8);

 

      String[] arr = { "a", "b", "c" };

      String str = "hello world jackson!";

      // byte

      jsonGenerator.writeBinary(str.getBytes());

      // boolean

      jsonGenerator.writeBoolean(true);

      // null

      jsonGenerator.writeNull();

      // float

      jsonGenerator.writeNumber(2.2f);

      // char

      jsonGenerator.writeRaw("c");

      // String

      jsonGenerator.writeRaw(str, 5, 10);

      // String

      jsonGenerator.writeRawValue(str, 5, 5);

      // String

      jsonGenerator.writeString(str);

      jsonGenerator.writeTree(JsonNodeFactory.instance.POJONode(str));

      System.out.println();

 

      // Object

      jsonGenerator.writeStartObject();// {

      jsonGenerator.writeObjectFieldStart("user");// user:{

      jsonGenerator.writeStringField("name","jackson");// name:jackson

      jsonGenerator.writeBooleanField("sex",true);// sex:true

      jsonGenerator.writeNumberField("age", 22);// age:22

      jsonGenerator.writeEndObject();// }

 

      jsonGenerator.writeArrayFieldStart("infos");//infos:[

      jsonGenerator.writeNumber(22);// 22

      jsonGenerator.writeString("this is array");// this is array

      jsonGenerator.writeEndArray();// ]

 

      jsonGenerator.writeEndObject();// }

 

      Person person = new Person();

      person.setAge("22");

      person.setName("morris");

      person.setSex("男");

      // complex Object

      jsonGenerator.writeStartObject();// {

      jsonGenerator.writeObjectField("user", person);// user:{bean}

      jsonGenerator.writeObjectField("infos", arr);//infos:[array]

      jsonGenerator.writeEndObject();// }

   }

 

}

 

运行结果如下:

"aGVsbG8gd29ybGQgamFja3NvbiE="true null 2.2c world jac  worl"hello world jackson!" "hello world jackson!"

 {"user":{"name":"jackson","sex":true,"age":22},"infos":[22,"thisis array"]}{"user":{"age":"22","sex":"男","name":"morris"},"infos":["a","b","c"]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

jackson将java对象转换为json字符串