package com.bbs.utils.json;
import java.io.IOException;
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.JsonGenerator;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.node.JsonNodeFactory;
public class JacksonTest {
private static JsonGenerator jsonGenerator = null;
private static ObjectMapper objectMapper = null;
private static User user = null;
public static void writeEntity2Json() throws IOException {
System.out.println("使用JsonGenerator转化实体为json串-------------");
// writeObject可以转换java对象,eg:JavaBean/Map/List/Array等
jsonGenerator.writeObject(user);
System.out.println();
System.out.println("使用ObjectMapper-----------");
// writeValue具有和writeObject相同的功能
objectMapper.writeValue(System.out, user);
}
public static void writeList2Json() throws IOException {
List
userList.add(user);
User u = new User();
u.setUid(10);
u.setUname("archie");
u.setUpwd("123");
userList.add(u);
objectMapper.writeValue(System.out, userList);
}
public static void writeMap2Json() {
try {
Map
User u = new User();
u.setUid(10);
u.setUname("archie");
u.setUpwd("123");
map.put("uid", u.getUid());
map.put("uname", u.getUname());
map.put("upwd", u.getUpwd());
System.out.println("jsonGenerator");
jsonGenerator.writeObject(map);
objectMapper.writeValue(System.out, map);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void writeOthersJSON() {
try {
String[] arr = { "a", "b", "c" };
System.out.println("jsonGenerator");
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();// }
User u = new User();
user.setUid(5);
user.setUname("tom");
user.setUpwd("123");
user.setNumber(3.44);
// complex Object
jsonGenerator.writeStartObject();// {
jsonGenerator.writeObjectField("uid", u);// user:{bean}
jsonGenerator.writeObjectField("infos", arr);// infos:[array]
jsonGenerator.writeEndObject();// }
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* JSON字符串转换为对象
*/
public static void readJson2Entity() {
String json = "{\"uid\":5,\"uname\":\"tom\",\"number\":3.44,\"upwd\":\"123\"}";
try {
User acc = objectMapper.readValue(json, User.class);
System.out.println(acc.getUid());
System.out.println(acc);
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* JSON转换为List对象
*/
public static void readJson2List() {
String json = "[{\"uid\":1,\"uname\":\"www\",\"number\":234,\"upwd\":\"456\"},"
+ "{\"uid\":5,\"uname\":\"tom\",\"number\":3.44,\"upwd\":\"123\"}]";
try {
List
json, List.class);
System.out.println(list.size());
for (int i = 0; i < list.size(); i++) {
Map
Set
for (Iterator
String key = it.next();
System.out.println(key + ":" + map.get(key));
}
}
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* JSON转换为数组对象
*/
public static void readJson2Array() {
String json = "[{\"uid\":1,\"uname\":\"www\",\"number\":234,\"upwd\":\"456\"},"
+ "{\"uid\":2,\"uname\":\"sdfsdf\",\"number\":4745,\"upwd\":\"23456\"}]";
try {
User[] arr = objectMapper.readValue(json, User[].class);
System.out.println(arr.length);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* JSON转换为Map对象
*/
public static void readJson2Map() {
String json = "{\"success\":true,\"A\":{\"address\": \"address2\",\"name\":\"haha2\",\"id\":2,\"email\":\"email2\"},"+
"\"B\":{\"address\":\"address\",\"name\":\"haha\",\"id\":1,\"email\":\"email\"}}";
try {
Map
System.out.println(maps.size());
Set
Iterator
while (iter.hasNext()) {
String field = iter.next();
System.out.println(field + ":" + maps.get(field));
}
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
user = new User();
user.setUid(5);
user.setUname("tom");
user.setUpwd("123");
user.setNumber(3.44);
objectMapper = new ObjectMapper();
try {
//jsonGenerator = objectMapper.getJsonFactory().createJsonGenerator(System.out, JsonEncoding.UTF8);
// writeEntity2Json();
// writeMap2Json();
// writeList2Json();
// writeOthersJSON();
// readJson2Entity();
// readJson2List();
// readJson2Array();
readJson2Map();
} catch (Exception e) {
e.printStackTrace();
}
}
}
========================User.java==============
package com.bbs.utils.json;
public class User {
private int uid;
private String uname;
private String upwd;
private double number;
public double getNumber() {
return number;
}
public void setNumber(double number) {
this.number = number;
}
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpwd() {
return upwd;
}
public void setUpwd(String upwd) {
this.upwd = upwd;
}
}
更多文章见:http://www.16boke.com/article/detail/4