java对象和字符串互转以及json字符串转List集合对象转json串字符串转对象一个字符串中包含多个对象转换为对象集合问题描述 今天在做一个调用别人接口的时候返回来一个json串数组,解析返回一个ArrayList集合的问题,因为调用别人的接口有点多,所以就想做的通用一点,虽然有点low,但是也是一步一个脚印走过去,相信自己的坚持让自己能做的更好 例如:”[{\”name\”:\”gg\”,\”pass\”:\”123\”},{\”name\”:\”gg\”,\”pass\”:\”234\”},{\”name\”:\”gg\”,\”pass\”:\”345\”}]”,字符串是这样的,转换为对象集合,里面包含两个属性值,一个是name,一个pass,下面直接上代码:package wxlogin; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.codehaus.jackson.map.ObjectMapper; import org.junit.Test; import net.sf.json.JSONArray; import net.sf.json.JSONObject; /** * @author lb * @time 2017年9月14日 上午11:46:21 */ @SuppressWarnings("unchecked") public class JSONUtil { public static<T> T strToObject(String str,Class<T> clazz){ ObjectMapper mapper = new ObjectMapper(); T t = null; try { t = mapper.readValue(str, clazz); return t; } catch (IOException e) { e.printStackTrace(); } return t; } //对象转换为字符串 public static<T> String objectToStr(T t){ ObjectMapper mapper = new ObjectMapper(); String str = null; try { str = mapper.writeValueAsString(t); } catch (IOException e) { e.printStackTrace(); } return str; } @Test public void testJson(){ String str = "{\"name\":\"gg\",\"pass\":\"123\"}"; System.out.println(str); System.out.println("--------------字符串转换为对象分割线-------------------"); Person person = strToObject(str,Person.class); System.out.println(person.getName()+":"+person.getPass()); System.out.println("----------------对象转换为字符串分割线-----------------"); //对象转换为字符串 String rtnString = objectToStr(person); System.out.println(rtnString); } //对象转换为List集合 private static <T> List<T> strToList(String str, Class<T> clazz) { JSONArray json = JSONArray.fromObject(str); JSONObject object = null; T t = null; List<T> list = new ArrayList<>(); for (int i = 0; i < json.size(); i++) { object = JSONObject.fromObject(json.get(i)); t = (T) JSONObject.toBean(object, clazz); list.add(t); } return list; } public static void main(String[] args) { String str = "[{\"name\":\"gg\",\"pass\":\"123\"},{\"name\":\"gg\",\"pass\":\"234\"},{\"name\":\"gg\",\"pass\":\"345\"}]"; // List<Person> list = JSONUtil.strToList(str,Person.class); List<Person> list = strToList(str, Person.class); for (Person ps : list) { System.out.println(ps.getName() + ":" + ps.getPass()); } } } 使用的java实体如下:package wxlogin; /** * @author lb * @time 2017年9月14日 上午11:42:51 */ public class Person { private String name; private String pass; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; } } 为了方便我直接把后来联想到的对象和字符串互转也加进来了。 下面运行main方法查看结果gg:123 gg:234 gg:345方法是用来解析类似的请求返回值的。 下面运行测试方法得到结果 在使用的过程中,对于这些小工具类我目的是为了节约一些工作量,但是后面ObjectMapper这个确实没用过,查了一下资料,写了两个目前常用的,以后自己也会慢慢添加。(ObjectMapper是一个高效转化json格式数据的类)盗用别人的话 注意在使用ObjectMapper需要引入包,pom.xml中加入如下内容 <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.7.1</version> </dependency>有不正确之处还望指正。 欢迎提问。版权声明:本文为qq_25050981原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。原文链接:https://blog.csdn.net/qq_25050981/article/details/77986539文章导航←你还在使用HttpClient封装请求实现第三方接口调用吗?快来试试这款开源Http框架吧使用 Cloudreve 搭建私有云盘→