在Java中利用Jackson解析JSON数据
jopen
11年前
Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。
易于人阅读和编写。同时也易于机器解析和生成
JSON-lib官网:http://json-lib.sourceforge.net/
Jackson官网:http://jackson.codehaus.org/
号称性能最快的JSON处理器Jackson远高于JSON_lib
转化json字符串:
/** * 使用Jackson生成json格式字符串 * * @author archie2010 since 2011-4-26下午05:59:46 */ public class JacksonTest { private static JsonGenerator jsonGenerator = null; private static ObjectMapper objectMapper = null; private static User user = null; /** * 转化实体为json字符串 * @throws IOException */ 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); } /** * 转化Map为json字符串 * @throws JsonGenerationException * @throws JsonMappingException * @throws IOException */ public static void writeMap2Json() throws JsonGenerationException, JsonMappingException, IOException{ System.out.println("转化Map为字符串--------"); Map<String, Object> map=new HashMap<String, Object>(); map.put("uname", user.getUname()); map.put("upwd", user.getUpwd()); map.put("USER", user); objectMapper.writeValue(System.out, map); } /** * 转化List为json字符串 * @throws IOException * @throws JsonMappingException * @throws JsonGenerationException */ 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); objectMapper.writeValue(System.out, userList); } 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(); } catch (IOException e) { e.printStackTrace(); } } }[{"number":3.44,"uname":"tom","upwd":"123","uid":5},{"number":0.0,"uname":"archie","upwd":"123","uid":10}]
输出到浏览器端:
StringWriter writer = new StringWriter(); ObjectMapper mapper = new ObjectMapper(); try { mapper.writeValue(writer, hMap); } catch (JsonGenerationException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } response.setContentType("text/html;charset=UTF-8"); PrintWriter out= response.getWriter(); out.print(writer.toString());
</span>