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>
    




  • 相关阅读:
    CF1202F You Are Given Some Letters...
    CF1178E Archaeology
    PTA (Advanced Level) 1005 Spell It Right
    PTA (Advanced Level) 1004 Counting Leaves
    Qt5——从零开始的Hello World教程(Qt Creator)
    PTA (Advanced Level) 1003 Emergency
    PTA (Advanced Level) 1002 A+B for Polynomials
    HDU 1272 小希的迷宫
    FZU 2150 Fire Game
    HihoCoder
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/6781983.html
Copyright © 2011-2022 走看看