且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Jackson解析JSON例子

更新时间:2022-10-03 14:18:55

==============JacksonTest .java====================

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<User> userList = new ArrayList<User>();
 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<String, Object> map = new HashMap<String, Object>();
  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<LinkedHashMap<String, Object>> list = objectMapper.readValue(
    json, List.class);
  System.out.println(list.size());
  for (int i = 0; i < list.size(); i++) {
   Map<String, Object> map = list.get(i);
   Set<String> set = map.keySet();
   for (Iterator<String> it = set.iterator(); it.hasNext();) {
    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<String, Map<String, Object>> maps = objectMapper.readValue(json, Map.class);
  System.out.println(maps.size());
  Set<String> key = maps.keySet();
  Iterator<String> iter = key.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://blog.csdn.net/wyc_cs/article/details/6679722

本文转自  wbb827  51CTO博客,原文链接:http://blog.51cto.com/wbb827/1329426