zoukankan      html  css  js  c++  java
  • Jackson.jar的使用记录

    Jackson.jar的使用记录

    之前一直使用json-lib.jar,近期发现网上说这个jackson.jar比較好

    package com.spring.controller;
    
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.codehaus.jackson.JsonEncoding;
    import org.codehaus.jackson.JsonGenerator;
    import org.codehaus.jackson.map.ObjectMapper;
    import org.codehaus.jackson.map.ObjectWriter;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.servlet.ModelAndView;
    
    @Controller
    public class JacksonController {
    	
    	@RequestMapping(value="user/jackson", method = {RequestMethod.POST,RequestMethod.GET})
    	public ModelAndView PostJsonTest(HttpServletRequest request,HttpServletResponse response) throws IOException{
    		ModelAndView mav=new ModelAndView();
    		mav.addObject("time", new Date());
    		JsonGenerator jsonGenerator = null;
    		ObjectMapper objectMapper = new ObjectMapper();
    		jsonGenerator = objectMapper.getJsonFactory().createJsonGenerator(System.out, JsonEncoding.UTF8);
    		
    		//将java对象转为json
    		UserJson userJson=new UserJson();
    		userJson.setUsername("小米");
    		userJson.setId("31231");
    		userJson.setPwd("123456");
    		userJson.setAge(24);
    		userJson.setAddress("广州");
    		userJson.setTel(13676586);
    		//objectMapper.writeValue(jsonGenerator, userJson);
    		String jsonStr = objectMapper.writeValueAsString(userJson);
    		
    		//writeObject能够转换java对象,eg:JavaBean/Map/List/Array等
    		//jsonGenerator.writeObject(userJson);
    		
    		System.out.println("-----json-------");
    		String jsonSS="{"address":"广州","id":"31231","username":"小米","tel":13676586,"age":24,"pwd":"123456"}";
    		System.out.println("--------字符串json-------"+jsonSS);
    		System.out.println("------标准jsonStr--------"+jsonStr);
    		mav.addObject("jsonStr", jsonStr);
    		mav.addObject("jsonss", jsonSS.toString());
    		mav.setViewName("json/jackson");
    		
    		
    		
    		//将list集合转为json
    		List<UserJson> list=new ArrayList<UserJson>();
    		for(int i=0;i<5;i++){
    			UserJson u3=new UserJson();
    			u3.setId("ooo"+i);
    			u3.setUsername("小小明"+i);
    			u3.setPwd("123456"+i);
    			u3.setAge(20+i);
    			u3.setAddress("广州"+i);
    			u3.setTel(13664+i*i*i);
    			list.add(u3);
    		}
    		String jsonlist = objectMapper.writeValueAsString(list);
    		mav.addObject("jsonlist", jsonlist.toString());
    
    		mav.setViewName("json/jackson");
    		return mav;
    	}
    	
    	
    	/**
    	 * list转为json数组
    	 */
    	public String writeListToJsonArray() throws IOException {  
    	    /*List<Event> list = new ArrayList<Event>(2);
    	    list.add(new Event("a1","a2"));
    	    list.add(new Event("b1","b2"));*/
    
    		List<String> list = new ArrayList<String>();
    	    list.add("A2");
    	    list.add("B2");
    		
    	    OutputStream out = new ByteArrayOutputStream();
    	    ObjectMapper mapper = new ObjectMapper();
    	    mapper.writeValue(out, list);
    	    byte[] data = ((ByteArrayOutputStream) out).toByteArray();
    	    System.out.println(new String(data));
    	    String result=new String(data);
    	    return result;
    	}
    	
    	/**
    	 * list转为json数组
    	 */
    	public String writeListToJsonArray2() throws IOException { 
    		ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
    		final ObjectMapper mapper = new ObjectMapper();
    		List<String> list = new ArrayList<String>();
    	    list.add("A2");
    	    list.add("B2");
    		String jsonArray = ow.writeValueAsString(list);
    		System.out.println(jsonArray);
    		return jsonArray;
    	}
    
    }
    
    
    ///java对象
    class UserJson{
    	private String id;
    	private String username;
    	private String pwd;
    	private Integer age;
    	private int tel;
    	private String address;
    	public String getId() {
    		return id;
    	}
    	public void setId(String id) {
    		this.id = id;
    	}
    	public String getUsername() {
    		return username;
    	}
    	public void setUsername(String username) {
    		this.username = username;
    	}
    	public String getPwd() {
    		return pwd;
    	}
    	public void setPwd(String pwd) {
    		this.pwd = pwd;
    	}
    	public Integer getAge() {
    		return age;
    	}
    	public void setAge(Integer age) {
    		this.age = age;
    	}
    	public int getTel() {
    		return tel;
    	}
    	public void setTel(int tel) {
    		this.tel = tel;
    	}
    	public String getAddress() {
    		return address;
    	}
    	public void setAddress(String address) {
    		this.address = address;
    	}
    	
    	
    }
    

    list转为json数组(是Java main程序)

    package com.main.java.demo;
    
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.codehaus.jackson.map.ObjectMapper;
    import org.codehaus.jackson.map.ObjectWriter;
    
    public class JacksonDemo {
    	public static void main(String args[]) throws IOException{
    		//writeListToJsonArray();
    		//writeListToJsonArray2();
    		//writeListToJsonArray3();
    		//writeListToJsonArray4();
    		//writeListToJsonArray5();
    		writeListToJsonArray6();
    	}
    	
    	/**
    	 * list转为json数组
    	 */
    	public static String writeListToJsonArray() throws IOException {  
    	    /*List<Event> list = new ArrayList<Event>(2);
    	    list.add(new Event("a1","a2"));
    	    list.add(new Event("b1","b2"));*/
    
    		/*List<String> list = new ArrayList<String>();
    	    list.add("A2");
    	    list.add("B2");*/
    		
    		/*List<Integer> list = new ArrayList<Integer>();
    	    list.add(12);
    	    list.add(45);
    	    list.add(5);*/
    		
    		List<Float> list = new ArrayList<Float>();
    	    list.add((float) 12.32);
    	    list.add((float) 45.12);
    	    list.add((float) 5.09);
    		
    	    OutputStream out = new ByteArrayOutputStream();
    	    ObjectMapper mapper = new ObjectMapper();
    	    mapper.writeValue(out, list);
    	    byte[] data = ((ByteArrayOutputStream) out).toByteArray();
    	    System.out.println(new String(data));
    	    String result=new String(data);
    	    return result;
    	}
    	
    	
    	/**
    	 * list转为json数组
    	 */
    	public static String writeListToJsonArray2() throws IOException { 
    			ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
    			final ObjectMapper mapper = new ObjectMapper();
    			List<String> list = new ArrayList<String>();
    		    list.add("A2");
    		    list.add("B2");
    		    
    		    //// Using writeValueAsString
    			String jsonArray = ow.writeValueAsString(list);
    			System.out.println(jsonArray);
    			return jsonArray;
    	}
    	
    	/**
    	 * list转为json数组
    	 */
    	public static String writeListToJsonArray3() throws IOException { 
    		ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
    		ObjectMapper mapper = new ObjectMapper();
    		List<String> list = new ArrayList<String>();
    		list.add("A23");
    		list.add("B23");
    		
    		//// Using Bytes
    		byte[] data = mapper.writeValueAsBytes(list);
    		String jsonArray = new String(data, "UTF-8");
    		System.out.println(jsonArray);
    		return jsonArray;
    	}
    	
    	/**
    	 * list转为json数组
    	 */
    	public static String writeListToJsonArray4() throws IOException { 
    		ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
    		ObjectMapper mapper = new ObjectMapper();
    		List<String> list = new ArrayList<String>();
    		list.add("A234");
    		list.add("B234");
    		
    		// Using ByteArrayOutputStream with new String()
    		OutputStream os = new ByteArrayOutputStream();
    		mapper.writeValue(os, list);
    		byte[] data = ((ByteArrayOutputStream) os).toByteArray();
    		String jsonArray = new String(data, "UTF-8");
    		System.out.println(jsonArray);
    		return jsonArray;
    	}
    	
    	
    	/**
    	 * list转为json数组
    	 */
    	public static String writeListToJsonArray5() throws IOException { 
    		ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
    		ObjectMapper mapper = new ObjectMapper();
    		List<String> list = new ArrayList<String>();
    		list.add("A2345");
    		list.add("B2345");
    		
    		// Using ByteArrayOutputStream
    		final OutputStream os = new ByteArrayOutputStream();
    		mapper.writeValue(os, list);
    		String jsonArray = ((ByteArrayOutputStream) os).toString("UTF-8");
    		System.out.println(jsonArray);
    		return jsonArray;
    	}
    	
    	/**
    	 * list转为json数组
    	 */
    	public static String writeListToJsonArray6() throws IOException { 
    		ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
    		ObjectMapper mapper = new ObjectMapper();
    		List<String> list = new ArrayList<String>();
    		list.add("A23456");
    		list.add("B23456");
    		
    		// Using writeValueAsString
    		String jsonArray = mapper.writeValueAsString(list);
    		System.out.println(jsonArray);
    		return jsonArray;
    	}
    	
    
    }
    

    jsp页面:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'jackson.jsp' starting page</title>
        
    	<meta http-equiv="pragma" content="no-cache">
    	<meta http-equiv="cache-control" content="no-cache">
    	<meta http-equiv="expires" content="0">    
    	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    	<meta http-equiv="description" content="This is my page">
    	<!--
    	<link rel="stylesheet" type="text/css" href="styles.css">
    	-->
        <script src="<%=basePath%>js/jquery.min.js"></script>
        
      </head>
      
      <body>
         <h3>Jackson 解析json</h3>
         <div><p>传过来的标准json字符串-----是一个json对象----</p>${jsonStr}</div>
         
         <div><p>传过来的json格式字符串-----是一个json对象-----</p>${jsonss}</div>
         
         <p>本页面造的json格式字符串------要转为json对象才干解析(还不是一个json对象)----</p>
         <div class="jsonHtml">{"address":"广州","id":"31231","username":"小米","tel":13676586,"pwd":"123456","age":24}</div>
      
         
         <div><p>传过来的jsonlist-----是一个json数组对象-----</p>${jsonlist}</div>
      
      </body>
    </html>
    <script type="text/javascript">
    <!--
        $(document).ready(function(){
        /*	
        	//解析服务端传过来的标准json
        	var jsonStr=${jsonStr};//是一个json对象
        	alert(jsonStr.username);//能够解析服务端传过来的json字符串。但解析不了页面造的字符串
        	//遍历json标准字符串
        	//var data=eval("("+jsonStr+")");
        	//alert(data.tel);
    		
        	//var jsonss=${jsonss};//是一个json对象,不用转为json对象,否则出错
        	//alert(jsonss);//是一个对象
        	//var item = jQuery.parseJSON(jsonss);
        	//alert(item.address);
        	
        	var jsonHtml = $(".jsonHtml").html();//是一个字符串,要转为json对象
        	//alert(jsonHtml.tel);//解析不了页面造的字符串,但能解析服务端传过来的字符串
        	
        	var item = jQuery.parseJSON(jsonHtml);
        	alert(item.address);
        */	
        
        
        //解析listjson
        var jsonlist=${jsonlist};
        alert(jsonlist.length);
        alert(jsonlist[0].username);
        for(var i=0;i<jsonlist.length;i++){
        	alert(jsonlist[i].username);
        }
        	
            
        });
    //-->
    </script>
    




  • 相关阅读:
    算法导论读书笔记(未完成)
    工作心理学(未完成)
    面试疑难点解析
    aop难点解析。
    Mybatis框架解析之Builder解析
    HashMap原理总结
    编程基础的重要性(程序员之路)
    Java HashMap详解
    Java源码分析系列之HttpServletRequest源码分析
    JFinal源码 分析之 Core包分析
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/6781983.html
Copyright © 2011-2022 走看看