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"
}
json格式字符串与java.util.Map的互转(借助于jackson.jar)的更多相关文章
- JAVA发送POST请求携带JSON格式字符串参数
import org.apache.commons.lang.StringUtils; import org.apache.http.HttpEntity; import org.apache.htt ...
- 关于json格式字符串解析并用mybatis存入数据库
园子里面找了很多关于json解析后存入数据库的方法,不是太乱,就是没有写完,我下面的主题代码多是受下面两位的启发,请按顺序查看 http://www.cnblogs.com/tian830937/p/ ...
- 小白学习Spark系列五:scala解析多级json格式字符串
一.背景 处理json格式的字符串,key值一定为String类型,但value不确定是什么类型,也可能嵌套json字符串,以下是使用 JSON.parseFull 来解析多层json. 二.实例代码 ...
- JSon_零基础_001_将布尔类型数组转换为JSon格式字符串,返回给界面
将布尔类型数组转换为JSon格式字符串,返回给界面 需要导入包: 编写bean: package com.west.webcourse.po; /** * 第01步:编写bean类, * 下一步com ...
- FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换
fastJson对于json格式字符串的解析主要用到了一下三个类: JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换. JSONObject:fas ...
- JSON(五)——同步请求中使用JSON格式字符串进行交互(不太常见的用法)
在同步请求中使用JSON格式进行数据交互的场景并不多,同步请求是浏览器直接与服务器进行数据交互的大多是用jsp的标签jstl和el表达式对请求中的数据进行数据的渲染.我也是在一次开发中要从其它服务器提 ...
- sprinbcloud学习之-Failed to bind properties under 'logging.level' to java.util.Map<java.lang.String>
日志报错,提示Failed to bind properties under 'logging.level' to java.util.Map<java.lang.String>, 原因为 ...
- WebApi返回Json格式字符串
WebApi返回json格式字符串, 在网上能找到好几种方法, 其中有三种普遍的方法, 但是感觉都不怎么好. 先贴一下, 网上给的常用方法吧. 方法一:(改配置法) 找到Global.asax文件,在 ...
- 错误:java.util.Map is an interface, and JAXB can't handle interfaces.
问题: 在整合spring+cxf时报错java.util.Map is an interface, and JAXB can't handle interfaces. 解决方法: 将服务端的serv ...
随机推荐
- 由Mifare 1卡破解带来的危险以及应对方法
今年年初以来,一个消息的传出震惊了整个IC卡行业.最近,德国和美国的研究人员成功地破解了NXP的Mifare1芯片的安全算法.Mifare1芯片主要用于门禁系统访问控制卡,以及一些小额支付卡,应用范围 ...
- MyEclipse启动时报 Unable to acquire application service. Ensure that the org.eclips
今天MyEclipse启动时报如下错误: !SESSION 2012-02-12 11:32:55.198 ---------------------------------------------- ...
- SPOJ 220 Relevant Phrases of Annihilation(后缀数组+二分答案)
[题目链接] http://www.spoj.pl/problems/PHRASES/ [题目大意] 求在每个字符串中出现至少两次的最长的子串 [题解] 注意到这么几个关键点:最长,至少两次,每个字符 ...
- android UI跨线程操作
android应用程序也是单线程程序,主线程为UI线程. android 线程是非安全的,即不要在子线程中更新 UI. public class MasterActivity extends Acti ...
- webservice跨域上传图片
1.上传文件,在一般处理程序中处理 //1.接收post过来的文件 HttpPostedFile file = context.Request.Files[]; || file.ContentLeng ...
- Visual Studio的ASP.NET修改默认打开浏览器
1.新建web空应用程序,输入项目名称. 2.右击项目名称,添加“新建项”—一般处理程序 3.右击新建一个HTML文件,任意命名. 4.右击新建的Html文件,选择“浏览方式” 5.选择后弹出浏览器选 ...
- textwrap——文本包裹和填充模块解析
textwrap模块提供了两个函数wrap()和fill(),以及TextWrapper类,以及另外一个工具函数dedent(). wrap()以及fill()都可以用来格式化一大段文 ...
- cocos2dx vs2010打开打印窗口
vs2010下调试时,有时需要有打印窗口. 在main.cpp函数的开始处,加入一下 AllocConsole(); freopen("CONIN$", "r" ...
- 挺有意思的Blog
http://blog.csdn.net/dawanganban/article/details/19925449 http://www.syslog.org/ https://baoz.net/li ...
- 转:命令和查询责任分离(CQRS)架构模式
读了“蓝皮书”距今差不多一年,它改变了我的软件开发和构建软件架构观.在我作为一名程序员期间,我尝试了许多不同的方式来构建软件.方法有很多,包括一个贫血的域模型(Anemic Domain Model) ...