java实现字符串和LIST,MAP转换
需要下载第三方的jar :net.sf.json
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.collections.map.ListOrderedMap;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
/**
*
* 处理json的工具类.
* <br>本类为处理json的工具类
* @author slj
*/
public class JsonTools {
/**
*
* json转换list.
* <br>详细说明
* @param jsonStr json字符串
* @return
* @return List<Map<String,Object>> list
* @throws
* @author slj
* @date 2013年12月24日 下午1:08:03
*/
public static List<Map<String, Object>> parseJSON2List(String jsonStr){
JSONArray jsonArr = JSONArray.fromObject(jsonStr);
List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
Iterator<JSONObject> it = jsonArr.iterator();
while(it.hasNext()){
JSONObject json2 = it.next();
list.add(parseJSON2Map(json2.toString()));
}
return list;
}
/**
*
* json转换map.
* <br>详细说明
* @param jsonStr json字符串
* @return
* @return Map<String,Object> 集合
* @throws
* @author slj
*/
public static Map<String, Object> parseJSON2Map(String jsonStr){
ListOrderedMap map = new ListOrderedMap();
//最外层解析
JSONObject json = JSONObject.fromObject(jsonStr);
for(Object k : json.keySet()){
Object v = json.get(k);
//如果内层还是数组的话,继续解析
if(v instanceof JSONArray){
List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
Iterator<JSONObject> it = ((JSONArray)v).iterator();
while(it.hasNext()){
JSONObject json2 = it.next();
list.add(parseJSON2Map(json2.toString()));
}
map.put(k.toString(), list);
} else {
map.put(k.toString(), v);
}
}
return map;
}
/**
*
* 通过HTTP获取JSON数据.
* <br>通过HTTP获取JSON数据返回list
* @param url 链接
* @return
* @return List<Map<String,Object>> list
* @throws
* @author slj
*/
public static List<Map<String, Object>> getListByUrl(String url){
try {
//通过HTTP获取JSON数据
InputStream in = new URL(url).openStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder sb = new StringBuilder();
String line;
while((line=reader.readLine())!=null){
sb.append(line);
}
return parseJSON2List(sb.toString());
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
*
* 通过HTTP获取JSON数据.
* <br>通过HTTP获取JSON数据返回map
* @param url 链接
* @return
* @return Map<String,Object> 集合
* @throws
* @author slj
*/
public static Map<String, Object> getMapByUrl(String url){
try {
//通过HTTP获取JSON数据
InputStream in = new URL(url).openStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder sb = new StringBuilder();
String line;
while((line=reader.readLine())!=null){
sb.append(line);
}
return parseJSON2Map(sb.toString());
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
*
* map转换json.
* <br>详细说明
* @param map 集合
* @return
* @return String json字符串
* @throws
* @author slj
*/
public static String mapToJson(Map<String, String> map) {
Set<String> keys = map.keySet();
String key = "";
String value = "";
StringBuffer jsonBuffer = new StringBuffer();
jsonBuffer.append("{");
for (Iterator<String> it = keys.iterator(); it.hasNext();) {
key = (String) it.next();
value = map.get(key);
jsonBuffer.append(key + ":" +"\""+ value+"\"");
if (it.hasNext()) {
jsonBuffer.append(",");
}
}
jsonBuffer.append("}");
return jsonBuffer.toString();
}
//test
public static void main(String[] args) {
String url = "http://...";
List<Map<String,Object>> list = getListByUrl(url);
System.out.println(list);
}
}
比如解析:
{"data":[{"id":"402880566092af74016092ba010f0026_151429025888228961","WI_ACTIVITY_ID_":"manuscripts","WI_ID_":"151429025888228961","workflowName":"志书编纂1","tableId":"8a7a543d5ccf1bb3015ccf412169006d","workflowId":"8a7aef3d5cd871bf015cd876c65b0000","workflowCode":"ZSBZ_NEW","PROCESS_INSTANCE_ID_":"151429025753518344","WI_STATUS_KEY_":"12","explain":"超级管理员申请的2017-12-26 20:09:12志书编纂1"},{"id":"83838a7a5fec0991015fec0b11d70010_151149367104810227","WI_ACTIVITY_ID_":"taskAssigned","WI_ID_":"151149367104810227","workflowName":"专题编研","tableId":"8a8aacd9564a3a1901564a882a6c0022","workflowId":"297ee40a56ca38590156caa6a0bb0008","workflowCode":"ZTBY_ZT","PROCESS_INSTANCE_ID_":"151149367010400495","WI_STATUS_KEY_":"12","explain":"超级管理员申请的2017-11-24 11:21:09专题编研"},{"id":"948181865e08e7b0015e091ea117011b_150339155625410132","WI_ACTIVITY_ID_":"activity2","WI_ID_":"150339155625410132","workflowName":"退回整理库","tableId":"402809815894218c01589560c7f90006","workflowId":"8383849458b8d25a0158b8dc9daa0000","workflowCode":"RETURNARRANGE","PROCESS_INSTANCE_ID_":"150339155603600640","WI_STATUS_KEY_":"12","explain":"超级管理员申请的2017-08-22 16:45:55退回整理库"}],"pageNumber":1,"pageSize":3,"total":3,"totalPages":1}
获取其中的data部分转换为List<Map<String,Object>>
public List<Map<String,Object>> parseStringToListMap(String res) throws Exception{
List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
JSONObject jsonResult = new JSONObject(res);
Iterator<String> nameItr = jsonResult.keys();
while (nameItr.hasNext()) {
String name = nameItr.next();
if(name.equals("data")){
String data=jsonResult.getString(name);
JSONArray jsonArr = JSONArray.fromObject(data);
for(int s=0;s<jsonArr.size();s++){//便利取到每个map
Map<String,Object> map = new HashMap<String,Object>();
String vas= jsonArr.get(s)==null?"":jsonArr.get(s).toString();
JSONObject jr=new JSONObject(vas);
Iterator<String> nir = jr.keys();
while (nir.hasNext()) {//取到map里的每个值
String json2 = nir.next();
String value= jr.getString(json2);
map.put(json2, value);
}
list.add(map);
}
}
}
return list;
}
java实现字符串和LIST,MAP转换的更多相关文章
- 用Java将字符串的首字母转换大小写
在项目开发的时候会需要统一字符串的格式,比如首字母要求统一大写或小写,那用Java如何实现这一功能?下面一起来学习学习. 话不多说,直接上代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 ...
- java json字符串转成 Map或List
import java.util.List; import java.util.Map; import java.util.Map.Entry; import net.sf.json.JSONArra ...
- java Json字符串转List<Map>类型
//相关包 import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonPa ...
- Java将字符串的首字母转换大小写
//首字母转小写public static String toLowerCaseFirstOne(String s){ if(Character.isLowerCase(s.charAt(0))) ...
- Java String 字符串操作小结
// 转载加编辑 -- 21 Apr 2014 1. Java字符串中子串的查找 Java中字符串中子串的查找共有四种方法,如下: 1.int indexOf(String str) :返回第一次出现 ...
- JAVA中List转换String,String转换List,Map转换String,String转换Map之间的转换类
<pre name="code" class="java"></pre><pre name="code" cl ...
- java中将jsonObject字符串转化为Map对象
java中将jsonObject字符串转化为Map对象 1.我们这里使用json-lib包进行转换,可在http://json-lib.sourceforge.net/下载依赖于下面的jar包: ja ...
- android112 jni 把java的字符串转换成c的字符串,数组处理
package com.itheima.charencode; import android.os.Bundle; import android.app.Activity; import androi ...
- java 二进制数字符串转换工具类
java 二进制数字符串转换工具类 将二进制转换成八进制 将二进制转换成十进制 将二进制转换成十六进制 将十进制转换成二进制 package com.iteye.injavawetrust.ad; i ...
随机推荐
- 蓝桥杯——X星球居民问题
[问题描述] X星球居民小区的楼房全是一样的,并且按矩阵样式排列.其楼房的编号为1,2,3... 当排满一行时,从下一行相邻的楼往反方向排号. 比如:当小区排号宽度为6时,开始情形如下: 1 2 ...
- Lock详解
在JDK1.5后,并发包里新增了Lock接口以及其实现类来实现锁功能,它提供了与synchronized关键字类似的锁功能,但它需要手动开启.关闭锁.虽然看起来没有synchronized方便,但它可 ...
- Spring MVC中一般类使用service
在Spring MVC中,Controller中使用service只需使用注解@Resource就行,但是一般类(即不使用@Controller注解的类)要用到service时,可用如下方法: 1.S ...
- 0. General-purpose tools (通用工具 8个)
http://en.wikipedia.org/wiki/Netcat这个简单的实用程序通过TCP或UDP网络连接读写数据. 它被设计为一个可靠的后端工具,可以直接或轻松地使用其他程序和脚本驱动. 同 ...
- 自己用的Xshell配色方案
[comfort]text=dce2e2cyan(bold)=2ad1b8text(bold)=dce2e2magenta=dd3682green=55bb55green(bold)=55bb55ba ...
- 2019CVTE技术支持软件编程
题目:找出长度为M的数组S中求和为1的任意三个数组合个数,举例:S=[-2, 0, 1, 2, -1, 3],结果为:3个([-2, 0, 3], [-2, 1, 2], [0, 2, -1]). 思 ...
- .Net牛刀小试-1缓冲使用
根据文件名缓冲文件: /// <summary> /// 根据文件名缓冲指定目录文件 /// </summary> public class FileCacheAdapter ...
- 【分布式锁】redis实现
转载:https://www.jianshu.com/p/c970cc710SETNX命令简介 SETNX key value 将key的值设为value,并且仅当key不存在. 若给定的key已经存 ...
- find命令简单使用
find命令是Linux系统查找文件的命令,能帮助用户在使用.管理Linux的日常事务时方便的查找出用户所需要的文件,find命令基本格式是:find [路径] [选项] [操作]. 列举一下find ...
- orientdb docker-compose 运行
orientdb 很早就跑过,但是现在在跑,发现配置有些变动,原有studio 直接就可以访问的,新版本的居然还需要自己添加 server 的配置,所以为了方便使用docker-compose 运行, ...