需要用到谷歌的一个jar包
gson.jar
测试的类
public class Person { private String name; private int age; private String sex; public Person(String name, int age, String sex) { this.name = name; this.age = age; this.sex = sex; } public Person() { } @Override public String toString() { return "Person{" + "name='" + name + ''' + ", age=" + age + ", sex='" + sex + ''' + '}'; } }
//只需要写明继承的泛型,就可以作为参数传入了 public class PersonType extends TypeToken> { }
java--json与JavaBean,List,Map的使用
public class Test { public static void main(String[] args) { //javaBean与json字符串之间的转化 Person person=new Person("小白",19,"男"); Gson gson = new Gson();//创建谷歌的工具类 //toJson();将对象转化为json字符串 String s = gson.toJson(person); System.out.println(s);//{"name":"小白","age":19,"sex":"男"} //fromJson()将json字符串转化为传入的类对象 person= gson.fromJson(s,Person.class); System.out.println(person.toString());//Person{name='小白', age=19, sex='男'} //List 与json之间的转化 ArrayListpeople = new ArrayList<>(); people.add(new Person("白小纯",20,"男")); people.add(new Person("孟浩",22,"男")); people.add(new Person("李清照",20,"女")); String s1 = gson.toJson(people); System.out.println(s1);//[{"name":"白小纯","age":20,"sex":"男"},{"name":"孟浩","age":22,"sex":"男"},{"name":"李清照","age":20,"sex":"女"}] //但是这样做的话就有缺陷 //转化回集合类型 ArrayList arrayList = gson.fromJson(s1, ArrayList.class); //发现原来传入集合的泛型失效了,全部的都变成gson包中的linkedTreeMap类型了 for (Object o : arrayList) { System.out.println(o); System.out.println(o.getClass());//class com.google.gson.internal.linkedTreeMap } //所以我们需要换一种方式来使用 Object o = gson.fromJson(s1, new PersonType().getType()); System.out.println(o.getClass());//class java.util.ArrayList ArrayList list=(ArrayList )o; //再看元素类型 System.out.println(list.get(0).getClass());//class projectTest.Person //Map类型与json字符串的转换 HashMap personHashMap=new HashMap<>(); personHashMap.put("p1",new Person("白小纯",20,"男")); personHashMap.put("p2",new Person("孟浩",22,"男")); String s2 = gson.toJson(personHashMap); System.out.println(s2);//{"p1":{"name":"白小纯","age":20,"sex":"男"},"p2":{"name":"孟浩","age":22,"sex":"男"}} //json'字符串转化为原来的对象 HashMap map= gson.fromJson(s2,new TypeToken >(){}.getType());//直接使用匿名子类 for (Map.Entry stringPersonEntry : map.entrySet()) { System.out.println(stringPersonEntry); } } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)