zoukankan      html  css  js  c++  java
  • json格式字符串与java.util.Map的互转(借助于jackson.jar)

    package com.test.javaAPI.json;
    
    /**
     * json工具类
     * 
     * @author Wei
     * @time 2016年10月2日 下午4:25:25
     */
    public class UtilJackson {
    	public static String jsonStr = "{"parameters":{"PI_CAE574":"20160908","PI_JSRQ":"20160908","Pi_CAE920":"301","Pi_YAE601":"1","PI_BAE001":"511502","Pi_JFDX":"1","":"pkg_weiyl.getMatchResult"},"serviceId":"directJdbcService","method":"savePointProcedure"}";
    	/**
    	 * 比较复杂的json格式字符串
    	 */
    	public static String jsonStr_HN = "{"DataPackage":{"JZZL":[{"CY\"BZ":"2","CYQK":"","CYRQ":"20090205","CYZD":"霍乱","CYZD1":"","CYZDGJDM":"A00.901","JZJLH":"136","JZLB":"21","RYRQ":"20090205","RYZD":"霍乱","RYZD1":"","RYZDGJDM":"A00.901","RYZS":"","SSMC":"","YYBH":"1000","ZYH":"","ZYJSLB":"1"},{"CYBZ":"2","CYQK":"","CYRQ":"20090202","CYZD":"霍乱","CYZD1":"","CYZDGJDM":"A00.901","JZJLH":"142","JZLB":"21","RYRQ":"20090201","RYZD":"霍乱","RYZD1":"","RYZDGJDM":"A00.901","RYZS":"","SSMC":"","YYBH":"1000","ZYH":"","ZYJSLB":"1"},{"CYBZ":"2","CYQK":"","CYRQ":"20090304","CYZD":"霍乱","CYZD1":"","CYZDGJDM":"A00.901","JZJLH":"132","JZLB":"21","RYRQ":"20090303","RYZD":"霍乱","RYZD1":"","RYZDGJDM":"A00.901","RYZS":"","SSMC":"","YYBH":"1000","ZYH":"","ZYJSLB":"1"},{"CYBZ":"2","CYQK":"","CYRQ":"20090306","CYZD":"nihao","CYZD1":"","CYZDGJDM":"","JZJLH":"140","JZLB":"21","RYRQ":"20090305","RYZD":"nihao","RYZD1":"","RYZDGJDM":"","RYZS":"","SSMC":"","YYBH":"1000","ZYH":"","ZYJSLB":"1"}]},"FunctionParams":{"FHZ":"1","GET_PAGE_TOTAL":"4","HAS_NEXT_REQUEST":"false","MSG":"执行成功!","SESSIONID":"QKSZPNrRPptTGs3ymqvJhQLZyxKJpd4XCHGJQBGFQcFQtwRYGvxS!306292812!1338878737991"}}";
    	public static String jsonStr_KEY_DataPackage = "DataPackage";
    	public static String jsonStr_KEY_FunctionParams = "FunctionParams";
    	public static String jsonStr4 = "{"verified":false,"name":{"last":"Hankcs","first":"Joe"},"userImage":"Rm9vYmFyIQ==","gender":"MALE"}";
    	public static String jsonStr4_KEY1 = "verified";
    }
    

      

    package com.test.javaAPI.json;
    
    import java.io.IOException;
    import java.util.Map;
    
    import org.codehaus.jackson.JsonParseException;
    import org.codehaus.jackson.map.JsonMappingException;
    import org.codehaus.jackson.map.ObjectMapper;
    import org.junit.Test;
    
    import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream;
    
    public class JacksonTest {
    	public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {
    		// ObjectMapper objMap = new ObjectMapper();
    		// // Map map = objMap.readValue(UtilJackson.jsonStr, Map.class);
    		// Map map = objMap.readValue(UtilJackson.jsonStr_HN, Map.class);
    		// System.out.println(map.toString());
    		// Set set = map.keySet();
    		// Iterator it = set.iterator();
    		// while (it.hasNext()) {
    		// Object key = (Object) it.next();
    		// Object value = map.get(key);
    		// System.out.println("key:" + key + ",value:" + value);
    		// }
    
    		// new JacksonTest().removeDataPackage("DataPackage");
    		String str = new JacksonTest().removeJsonObjByKey(UtilJackson.jsonStr4,
    				UtilJackson.jsonStr4_KEY1);
    		System.out.println(str);
    	}
    
    	/**
    	 * 方法的作用:去除一个json格式字符串的某一个key 删除 这个json字符串里的这个key对应的对象 该方法与框架中的 String
    	 * cn.sinobest.framework.web.his.JsonManager.removeDataPackage(String
    	 * jsonStr) 这个方法的功能一致
    	 * 
    	 * @param jsonKey
    	 * @return
    	 * @throws JsonParseException
    	 * @throws JsonMappingException
    	 * @throws IOException
    	 */
    	@Test
    	public String removeDataPackage(String jsonKey) throws JsonParseException, JsonMappingException, IOException {
    		ObjectMapper objMap = new ObjectMapper();
    		Map map = objMap.readValue(UtilJackson.jsonStr_HN, Map.class);
    		// map.remove("DataPackage");
    		map.remove(jsonKey);
    		ByteOutputStream bops = new ByteOutputStream();
    		objMap.writeValue(bops, map);
    		System.out.println(bops.toString());
    		return null;
    	}
    
    	/**
    	 * 
    	 * @param jsonStr
    	 * @param key
    	 * @return
    	 * @throws IOException
    	 * @throws JsonMappingException
    	 * @throws JsonParseException
    	 */
    	public String removeJsonObjByKey(String jsonStr, String key)
    			throws JsonParseException, JsonMappingException, IOException {
    		ObjectMapper objMap = new ObjectMapper();
    		// 1 把json格式字符串转换为 java.util.Map
    		Map map = objMap.readValue(jsonStr, Map.class);
    		// 2 删除map中的对应key的项目
    		map.remove(key);
    		// 准备字节流,接收ObjectMapper中写出的输出流
    		ByteOutputStream bops = new ByteOutputStream();
    		// 3 把map重新转换为json格式字符串
    		objMap.writeValue(bops, map);
    		if (!"".equals(bops)) {
    			return bops.toString();
    		}
    		return "";
    	}
    
    }
    

      

    控制台输出:

    {"name":{"last":"Hankcs","first":"Joe"},"userImage":"Rm9vYmFyIQ==","gender":"MALE"}

    http://tool.oschina.net/codeformat/json 这个json字符串格式化工具格式化后的效果:

     

    {
        "name": {
            "last": "Hankcs", 
            "first": "Joe"
        }, 
        "userImage": "Rm9vYmFyIQ==", 
        "gender": "MALE"
    }


  • 相关阅读:
    关于vue子组件的数据变了视图不更新的解决办法
    ES5、ES6
    Vue 项目打包上线
    Threejs的学习 1、开启Threejs
    Threejs的学习 2、点,线,面
    Mahalanobis distance
    64位计算机、应用程序和32为计算机、应用程序
    C++编译器无法捕捉到的8种错误(转载)
    最大字段和的扩展最大子矩阵和及最大m字段和问题
    最大字段和各种不同算法实现(参考编程珠玑)
  • 原文地址:https://www.cnblogs.com/Sunnor/p/5927933.html
Copyright © 2011-2022 走看看