011-JSON、JSONObject、JSONArray使用、JSON数组形式字符串转换为List<Map<String,String>>的8种方法
一、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());
}
}
}
}
011-JSON、JSONObject、JSONArray使用、JSON数组形式字符串转换为List<Map<String,String>>的8种方法的更多相关文章
- JSON数组形式字符串转换为List<Map<String,String>>的8种方法
package com.zkn.newlearn.json; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArr ...
- JSON数组形式字符串转换为List<Map<String,String>>的几种方法
package com.zkn.newlearn.json; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArr ...
- net.sf.json.JSONObject 和org.json.JSONObject 的差别
http://my.oschina.net/wangwu91/blog/340721 net.sf.json.JSONObject 和org.json.JSONObject 的差别. 一.创建jso ...
- net.sf.json.JSONObject 和org.json.JSONObject
参考 net.sf.json.JSONObject 和org.json.JSONObject 的差别
- [转]json+JSONObject+JSONArray 结合使用
JSONObject与JSONArray的区别简述: 区别在于JSONObject是一个{}包裹起来的一个对象(Object),而JSONArray则是[]包裹起来的一个数组(Array),说白点就是 ...
- Java 利用Gson将json字符串转换为List<Map<String, String>>
json字符串类似于: [ { "userPhone": "123", "userNo": "123-2", " ...
- SQL处理数组,字符串转换为数组
原文转载自:http://hi.baidu.com/gagahjt/item/fd081316450f05028ebde413 一.按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串 ...
- JSON 格式的转换: 数组、字符串、List集合、DataTable,实体对象
JSON验证工具:http://jsonlint.com/JSON简明教程:http://www.w3school.com.cn/json/Newtonsoft.Json类库下载:http://jso ...
- 记录:js删除数组中某一项或几项的几种方法
1:js中的splice方法 splice(index,len,[item]) 注释:该方法会改变原始数组. splice有3个参数,它也可以用来替换/删除/添加数组内某一个或者几个值 inde ...
随机推荐
- python的简介(解释器、变量、用户交互、if语句)
一.python的起源 python是吉多·范罗苏姆(Guido van Rossum)在1989年的圣诞节期间因为无聊打发时间所开发的一个脚本解释程序. python是一门解释型.弱类型的编程语言. ...
- 51nod 2497 数三角形
小b有一个仅包含非负整数的数组a,她想知道有多少个三元组(i,j,k),满足i<j<k且a[i],a[j],a[k]可能作为某个三角形的三条边的边长. 收起 输入 第一行输入一个正整数 ...
- Div+CSS总结
之前最早接触是在牛腩新闻发布系统中,当时看到这些自己是一头雾水,不过好在我们已经形成了这样的学习习惯,先实践在接触理论,这样再学习理论的时候就会想到当初我是怎样的迷茫,这样自己印象更深刻. DIV+C ...
- 2019-2020-1 20199301《Linux内核原理与分析》第四周作业
Week4 MenuOS的构造 一.上周复习 计算机的三大法宝: 存储程序计算机: 函数调用堆栈: 中断. 操作系统的两把宝剑: 中断上下文-保存现场和恢复现场 进程上下文 二.Linux内核源代码简 ...
- K-means: 多次random initialization来避免bad局部最优
K-means algorithm initialize K-means算法中有一步为随机初始化cluster centroids,这步如何进行,我们将介绍一种运行比较好的方法,这种方法比其它初始化的 ...
- 使用safe-rm替换rm命令,防止误删除
1.下载safe源码包: wget https://launchpad.net/safe-rm/trunk/0.12/+download/safe-rm-0.12.tar.gz 2.解压safe-rm ...
- http之browser抓包
Chrome 抓包 详解谷歌Network 面板 快捷键:Control+Shift+I (Windows) or Command+Option+I (Mac) 控制器 补充知识: HAR Chrom ...
- C# 打开 EXE 文件
命名空间是using System.Diagnostics; 在编写程序时经常会使用到调用可执行程序的情况,本文将简单介绍C#调用exe的方法.在C#中,通过Process类来进行进程操作. Proc ...
- BZOJ 2064: 分裂 状压动归
最多的操作次数是 $n+m-1$ (相当于把第一个暴力合并,再暴力拆成第二个).如果第一个序列的一个子序列和第二个区间的子序列相等,那么总次数就可以减 $2$.将第二个序列所有数取反,直接求解有多少个 ...
- Ubuntu 下面手动安装 Redis
1.下载 wget http://download.redis.io/releases/redis-2.8.17.tar.gz .tar.gz cd redis- make 2.复制文件到bin目录 ...