一、JSON数据格式
1.1、常用JSON数据格式
1、对象方式:JSONObject的数据是用 { } 来表示的,
例如: { "id" : "123", "courseID" : "huangt-test", "title" : "提交作业", "content" : null }
2、数组方式:JSONArray,顾名思义是由JSONObject构成的数组,用 [ { } , { } , ...... , { } ] 来表示
例如:[ { "id" : "123", "courseID" : "huangt-test", "title" : "提交作业" } , { "content" : null, "beginTime" : 1398873600000 "endTime" } ] ;
表示了包含2个JSONObject的JSONArray。
1.2、JSON、JSONObject、JSONArray使用
对象/数组 | toJSONString | parse | parseObject | parseArray |
JSON | 对象/数组 | 数据是对象时,返回:JSONObject的Object 数据是数组时,返回:JSONArray的Object | 对象 | 数组 |
JSONObject | 对象/数组 | 数据是对象时,返回:JSONObject的Object 数据是数组时,返回:JSONArray的Object | 对象 | 数组 |
JSONArray | 对象/数组 | 数据是对象时,返回:JSONObject的Object 数据是数组时,返回:JSONArray的Object | 对象 | 数组 |
parseObject:泛型实现 返回 具体bean;非泛型实现 返回 JSONObject
parseArray:泛型实现 返回 具体List<bean>;非泛型实现 返回 JSONArray<JSONObject>
parse:相当于parseObject和parseArray的非泛型实现
工具类Person
public class Person { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Person(String name, Integer age) { this.name = name; this.age = age; } public Person() { } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
1.2.1、数据是 对象 方式测试【parseObject】
/** * 数据是 对象 测试 */ public class ObjectJsonTest { @Test public void testtoJSONString(){ Person person = new Person("aa", 1); String s1 = JSON.toJSONString(person); System.out.println(s1); String s2 = JSONObject.toJSONString(person); System.out.println(s2); String s3 = JSONArray.toJSONString(person); System.out.println(s3); } @Test public void testparseObject(){ Person person = new Person("aa", 1); String s1 = JSON.toJSONString(person); System.out.println(s1); Person p1 = JSON.parseObject(s1, Person.class); JSONObject jsonObject = JSON.parseObject(s1); System.out.println(p1); Person p2 = JSONObject.parseObject(s1, Person.class); System.out.println(p2); Person p3 = JSONArray.parseObject(s1, Person.class); System.out.println(p3); } /** * 失败 */ @Test public void testparseArray(){ Person person = new Person("aa", 1); String s1 = JSON.toJSONString(person); System.out.println(s1); //失败:转数组 必须是 list List<Person> p1 = JSON.parseArray(s1, Person.class); System.out.println(p1); //失败:转数组 必须是 list List<Person> p2 = JSONObject.parseArray(s1, Person.class); System.out.println(p2); //失败:转数组 必须是 list List<Person> p3 = JSONArray.parseArray(s1, Person.class); System.out.println(p3); } }
1.2.2、数据是 数组 方式测试【parseArray】
/** * 数据是 数组 测试 */ public class ArrayJsonTest { @Test public void testtoJSONString(){ Person person = new Person("aa", 1); List<Person> list =new ArrayList<>(); list.add(person); String s1 = JSON.toJSONString(list); System.out.println(s1); String s2 = JSONObject.toJSONString(list); System.out.println(s2); String s3 = JSONArray.toJSONString(list); System.out.println(s3); } //失败 @Test public void testparseObject(){ Person person = new Person("aa", 1); List<Person> list =new ArrayList<>(); list.add(person); String s1 = JSON.toJSONString(list); System.out.println(s1); //失败:转对象 必须是 {} Person p1 = JSON.parseObject(s1, Person.class); System.out.println(p1); //失败:转对象 必须是 {} Person p2 = JSONObject.parseObject(s1, Person.class); System.out.println(p2); //失败:转对象 必须是 {} Person p3 = JSONArray.parseObject(s1, Person.class); System.out.println(p3); } @Test public void testparseArray(){ Person person = new Person("aa", 1); List<Person> list =new ArrayList<>(); list.add(person); String s1 = JSON.toJSONString(list); System.out.println(s1); List<Person> p1 = JSON.parseArray(s1, Person.class); System.out.println(p1); List<Person> p2 = JSONObject.parseArray(s1, Person.class); System.out.println(p2); List<Person> p3 = JSONArray.parseArray(s1, Person.class); System.out.println(p3); } }
1.2.3、非泛型示例【主要是parseObject、parseArray以及parse】
/** * 非泛型示例 */ public class JSONObjectJsonTest { //数据是 对象 @Test public void testparseObject1(){ Person person = new Person("aa", 1); String s1 = JSON.toJSONString(person); System.out.println(s1); JSONObject p1 = JSON.parseObject(s1); System.out.println(p1); System.out.println(p1.getString("name")); JSONObject p2 = JSONObject.parseObject(s1); System.out.println(p2); JSONObject p3 = JSONArray.parseObject(s1); System.out.println(p3); } //数据是 对象 @Test public void testparseObject2(){ Person person = new Person("aa", 1); String s1 = JSON.toJSONString(person); System.out.println(s1); Object p1 = JSON.parse(s1); System.out.println(p1.getClass()); System.out.println(p1); Object p2 = JSONObject.parse(s1); System.out.println(p2.getClass()); System.out.println(p2); Object p3 = JSONArray.parse(s1); System.out.println(p3.getClass()); System.out.println(p3); } //数据是 数组 @Test public void testparseArray1(){ Person person = new Person("aa", 1); List<Person> list =new ArrayList<>(); list.add(person); String s1 = JSON.toJSONString(list); System.out.println(s1); JSONArray p1 = JSON.parseArray(s1); System.out.println(p1); JSONArray p2 = JSONObject.parseArray(s1); System.out.println(p2); JSONArray p3 = JSONArray.parseArray(s1); System.out.println(p3); } //数据是 数组 @Test public void testparseArray2(){ Person person = new Person("aa", 1); List<Person> list =new ArrayList<>(); list.add(person); String s1 = JSON.toJSONString(list); System.out.println(s1); JSONArray p1 = (JSONArray)JSON.parse(s1); System.out.println(p1.getClass()); System.out.println(p1); Object p2 = JSONObject.parse(s1); System.out.println(p2.getClass()); System.out.println(p2); Object p3 = JSONArray.parse(s1); System.out.println(p3.getClass()); System.out.println(p3); } }
二、JSON数组形式字符串转换为List<Map<String,String>>的8种方法
public class JsonToLIstMapTest { String strArr = "[{\"0\":\"zhangsan\",\"1\":\"lisi\",\"2\":\"wangwu\",\"3\":\"maliu\"}," + "{\"00\":\"zhangsan\",\"11\":\"lisi\",\"22\":\"wangwu\",\"33\":\"maliu\"}]"; @Test public void test(){ //第一种方式 List<Map<String,String>> listObjectFir = (List<Map<String,String>>) JSONArray.parse(strArr); System.out.println("1、利用JSONArray中的parse方法来解析json数组字符串");//com.alibaba.fastjson.JSONObject System.out.println("类型:"+listObjectFir.get(0).getClass()); for(Map<String,String> mapList : listObjectFir){ for (Map.Entry entry : mapList.entrySet()){ System.out.println( entry.getKey() + " " +entry.getValue()); } } //第二种方式 List<Map<String,String>> listObjectSec = JSONArray.parseObject(strArr,List.class); System.out.println("2、利用JSONArray中的parseObject方法并指定返回类型来解析json数组字符串");//com.alibaba.fastjson.JSONObject System.out.println("类型:"+listObjectSec.get(0).getClass()); for(Map<String,String> mapList : listObjectSec){ for (Map.Entry entry : mapList.entrySet()){ System.out.println( entry.getKey() + " " +entry.getValue()); } } //第三种方式 JSONArray listObjectThir = JSONArray.parseArray(strArr); System.out.println("3、利用JSONArray中的parseArray方法来解析json数组字符串"); System.out.println("类型:"+listObjectThir.get(0).getClass());//com.alibaba.fastjson.JSONObject for(Object mapList : listObjectThir){ for (Object entry : ((Map)mapList).entrySet()){ System.out.println(((Map.Entry)entry).getKey() + " " +((Map.Entry)entry).getValue()); } } //第四种方式 List listObjectFour = JSONArray.parseArray(strArr,Map.class); System.out.println("4、利用JSONArray中的parseArray方法并指定返回类型来解析json数组字符串"); System.out.println("类型:"+listObjectFour.get(0).getClass());//java.util.HashMap for(Object mapList : listObjectFour){ for (Object entry : ((Map)mapList).entrySet()){ System.out.println(((Map.Entry)entry).getKey() + " " +((Map.Entry)entry).getValue()); } } //第五种方式 JSONArray listObjectFifth = JSONObject.parseArray(strArr); System.out.println("5、利用JSONObject中的parseArray方法来解析json数组字符串"); System.out.println("类型:"+listObjectFifth.get(0).getClass());//com.alibaba.fastjson.JSONObject for(Object mapList : listObjectFifth){ for (Object entry : ((Map)mapList).entrySet()){ System.out.println(((Map.Entry)entry).getKey() + " " +((Map.Entry)entry).getValue()); } } //第六种方式 List listObjectSix = JSONObject.parseArray(strArr,Map.class); System.out.println("6、利用JSONObject中的parseArray方法并指定返回类型来解析json数组字符串"); System.out.println("类型:"+listObjectSix.get(0).getClass());//java.util.HashMap for(Object mapList : listObjectSix){ for (Object entry : ((Map)mapList).entrySet()){ System.out.println(((Map.Entry)entry).getKey() + " " +((Map.Entry)entry).getValue()); } } //第七种方式 JSONArray listObjectSeven = JSON.parseArray(strArr); System.out.println("7、利用JSON中的parseArray方法来解析json数组字符串"); System.out.println("类型:"+listObjectSeven.get(0).getClass());//com.alibaba.fastjson.JSONObject for(Object mapList : listObjectSeven){ for (Object entry : ((Map)mapList).entrySet()){ System.out.println(((Map.Entry)entry).getKey() + " " +((Map.Entry)entry).getValue()); } } //第八种方式 List listObjectEigh = JSONObject.parseArray(strArr,Map.class); System.out.println("8、利用JSON中的parseArray方法并指定返回类型来解析json数组字符串"); System.out.println("类型:"+listObjectEigh.get(0).getClass());//java.util.HashMap for(Object mapList : listObjectEigh){ for (Object entry : ((Map)mapList).entrySet()){ System.out.println(((Map.Entry)entry).getKey() + " " +((Map.Entry)entry).getValue()); } } } }
所有评论(0)