大家好,欢迎来到IT知识分享网。
🎈个人公众号:🎈 :✨✨ 可为编程 ✨✨ 🍟🍟
🔑个人信条:🔑知足知不足 有为有不为 为与不为皆为可为🌵
🍉本篇简介:🍉 本片详细说明了深入理解JSON数组、JSON对象、JSON字符串、普通数组的区别与操作整理,并给出具体操作实例,如有出入还望指正。关注公众号【可为编程】回复【面试】领取年度最新面试题大全!!!
深度理解JSON数组、JSON对象、JSON字符串、普通数组
在这里首先提一下
JSON的数据格式:
1) 并列的数据之间用逗号(”, “)分隔。
2) 映射用冒号(”: “)表示。
3) 并列数据的集合(数组)用方括号(“[]“)表示。
4) 映射的集合(对象)用大括号(”{}”)表示。
5)JSON 数据的书写格式是:名称/值对。
6)名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:“firstName”:“John”
JSON可以包含的值
1、数字(整数或浮点数)
2、字符串(在双引号中)
3、逻辑值(true 或 false)
4、数组(在方括号中)
5、对象(在花括号中)
6、null
JSON对象
JSON 对象在花括号中书写:
对象可以包含多个名称/值对:
{ “firstName”:“John” , “lastName”:“Doe” }
JSON数组
前台处理JSON数据
在这里我们列举三个json数据:
var json={
a:12,b:5,c:7}; //普通的json对象数据 var arr=[12,5,7]; //普通的数组 var jsonArray= [ //josn数组 {
"name":"zhang", "password":"123"}, {
"name":"yang", "password":"456"} ]; alert(json['a']); alert(arr[0]); alert(jsonArray[0].name); //对普通json对象的遍历 for(var i in json){
alert('第'+i+'个:'+json[i]); } //对数组的遍历 for(var i in arr){
alert('第'+i+'个:'+arr[i]); } //对json数组的遍历 for(var p in jsonArray){
//遍历json数组时,这么写p为索引,0,1 alert(jsonArray[p].name + " " + jsonArray[p].password); } // 或者 for(var i = 0; i < jsonArray.length; i++){
alert(jsonArray[i].name + " " + jsonArray[i].password); } //只有数组或者json数组才可以使用length方法。json对象使用length方法无效。 //如果json对象的子元素是数组或者json数组,也可以使用length方法。可以用于遍历数据
字符串和json对象和json对象数组相互转换
var jsonStr = "{\"userId\":\"001\"}"; // json对象字符串 var jsonArryStr = "[{\"userId\":\"001\"},{\"userId\":\"002\"}]"; // json数组字符串 var jsonObj = JSON.parse(jsonStr); // 字符串转为json对象 //var jsonObj = $.parseJSON(jsonStr) //Jquery中的方法 var jsonArry = JSON.parse(jsonArryStr); // 字符串转为json数组 var jsonStr = JSON.stringify(jsonObj); // json对象转为字符串 var last = jsonObj.toJSONString(); //将JSON对象转化为JSON字符串 var jsonArryStr=JSON.stringify(jsonArry);// json数组转为字符串 alert(jsonStr); alert(jsonArryStr); alert(jsonObj.userId); alert(jsonArry[0]['userId']); //JSON.stringify(obj) 将JSON对象转为字符串。 //JSON.parse(string) 将字符串转为JSON对象格式。 //json对象转化成json数组对象 var arr1=[]; for(var i in jsonObj){
//var o={}; //o[i]=jsonObj[i]; arr1.push(jsonObj[i]); } //第二种方法 <script> //将对象转化为数组 let obj={
'未完成':5,'已完成':8,'待确认':4,'已取消':6}; var arr = []; for (let i in obj) {
//arr.push(obj[i]); //属性 //arr.push(obj[i]); //值 var o={
}; o[i]=obj[i]; arr.push(o); } function objToArray(array) {
var arr = []; for (var i in array) {
var o={
}; o[i]=array[i]; arr.push(o); } console.log(arr); //return arr; } // console.log(arr) objToArray(obj); </script>
后台处理JSON数据
在这里我们使用的是阿里的fastjson
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.3</version> </dependency>
我对应这相关的数据类型和知识点进行了比较详细的案例实施,具体代码如下:
public static void main(String[] args) {
//字符串转JSONObject String mapString = "{id:'',name:'徐妍',age:'24'}"; JSONObject json = JSON.parseObject(mapString);//json={"id":"","name":"徐妍","age":"24"} //JSONObject转实体类 Student json_student = JSONObject.toJavaObject(json, Student.class); String name = json.getString("name"); System.out.println("name+json------" + name + "/n" + json); System.out.println("json_student---------" + json_student); //name+json------徐妍/n{"name":"徐妍","id":"","age":"24"} //json_student---------Student{id=, name='徐妍', age='24'} //关注公众号【可为编程】回复【面试】领取年度最新面试题大全!!! //json对象数组字符串(有里往外命名) String homeworklist = "[{id:'',name:'蛋蛋',age:'24'},{id:'',name:'闲闲',age:'24'}]"; //对象数组字符串转JSONArray JSONArray json_list = JSON.parseArray(homeworklist); //对象数组字符串转List集合 List<Student> stu1 = JSON.parseArray(homeworklist, Student.class); System.out.println("stu1----------" + stu1); //stu1----------[Student{id=, name='蛋蛋', age='24'}, Student{id=, name='闲闲', age='24'}] System.out.println("json_list-------" + json_list); //json_list-------[{"name":"蛋蛋","id":"","age":"24"},{"name":"闲闲","id":"","age":"24"}] //遍历JSONArray for (Object stu : json_list) {
System.out.println("stu2--------" + stu); } //stu2--------{"name":"蛋蛋","id":"","age":"24"} //stu2--------{"name":"闲闲","id":"","age":"24"} //复杂的json字符串 String homeworkMap = "[{id:'',name:'蛋蛋',age:'24'}, {id:'',name:'闲闲',age:['24']}]"; //对象数组字符串转List集合 List<Student> json_map = JSON.parseArray(homeworkMap, Student.class); System.out.println("json_map---------" + json_map); //json_map---------[Student{id=, name='蛋蛋', age='24'}, Student{id=, name='闲闲', age='["24"]'}] //将List转换成JSONArray,要先转换成json字符串 JSONArray list1 = JSONArray.parseArray(JSON.toJSONString(json_map)); System.out.println("list1---------" + list1); //list1---------[{"name":"蛋蛋","id":,"age":"24"},{"name":"闲闲","id":,"age":"[\"24\"]"}] //带名称的json数组对象字符串 String homeworkMap2 = "{data:[{id:'',name:'蛋蛋',age:['24','12']}, {id:'',name:'闲闲',age:['24','12']}],stud:{id:'',name:'这是stud',age:'24'}}"; //先将json字符串转化成JSONObject JSONObject json_hp = JSON.parseObject(homeworkMap2); System.out.println("json_hp--------------" + json_hp); //json_hp--------------{"data":[{"name":"蛋蛋","id":"","age":["24","12"]},{"name":"闲闲","id":"","age":["24","12"]}],"stud":{"name":"这是stud","id":"","age":"24"}} //获取key为data的数组 System.out.println("data--------------" + json_hp.get("data")); //data--------------[{"name":"蛋蛋","id":"","age":["24","12"]},{"name":"闲闲","id":"","age":["24","12"]}] //获取key为data数组的stud对象 System.out.println("stud--------------" + json_hp.get("stud")); //stud--------------{"name":"这是stud","id":"","age":"24"} //强转 List<Map<String,Object>> list= (List<Map<String, Object>>) json_hp; List<Map<String, Object>> list = (List<Map<String, Object>>) json_hp.get("data"); System.out.println("list------------" + list); //list------------[{"name":"蛋蛋","id":"","age":["24","12"]},{"name":"闲闲","id":"","age":["24","12"]}] //遍历list for (Map<String, Object> map : list) {
System.out.println("map-----" + map); List age1 = (List) map.get("age"); String age = String.valueOf(age1); for (Object age2 : age1) {
System.out.println("age2-----------" + age2); } System.out.println("age-----------" + age); } /* map-----{"name":"蛋蛋","id":"","age":["24","12"]} age2-----------24 age2-----------12 age-----------["24","12"] map-----{"name":"闲闲","id":"","age":["24","12"]} age2-----------24 age2-----------12 age-----------["24","12"]*/ }
这里是一个真诚的*青年技术交流:*,不管你是大学生、社畜、想学习变成的其他人员,欢迎大家加入我们,一起成长,一起进步,真诚的欢迎你,不管是技术,还是人生,还是学习方法。有道无术,术亦可求,有术无道,止于术。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/117585.html
