深入理解JSON数组、JSON对象、JSON字符串、普通数组的区别与操作整理

简介: JSON的数据格式:1) 并列的数据之间用逗号(”, “)分隔。2) 映射用冒号(”: “)表示。3) 并列数据的集合(数组)用方括号(“[]“)表示。4) 映射的集合(对象)用大括号(”{}”)表示。5)JSON 数据的书写格式是:名称/值对。6)名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:“firstName”:“John”

在这里首先提一下

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数组转换成JSON字符串等。

JSON 数组在方括号中书写:


数组可包含多个对象:

{
“employees”: [
{ “firstName”:“John” , “lastName”:“Doe” },
{ “firstName”:“Anna” , “lastName”:“Smith” },
{ “firstName”:“Peter” , “lastName”:“Jones” }
]
}
前台处理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方法。可以用于遍历数据

两者一对比就大致可以看出for in遍历对象是最适合了,如果用for的话,对象里面的k值和value值只好无能为力,那就只能用for in。如果只是普通的数组,用for最适合;那如果for in遍历普通数组话,他会自带length属性,到后面会报错,所以for in不适合循环遍历普通数组。


字符串和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:'211415034',name:'徐妍',age:'24'}";
        JSONObject json = JSON.parseObject(mapString);//json={"id":"211415034","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":"211415034","age":"24"}
        //json_student---------Student{id=211415034, name='徐妍', age='24'}
        //json对象数组字符串(有里往外命名)
        String homeworklist = "[{id:'211415034',name:'蛋蛋',age:'24'},{id:'211415034',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=211415034, name='蛋蛋', age='24'}, Student{id=211415034, name='闲闲', age='24'}]
        System.out.println("json_list-------" + json_list);
        //json_list-------[{"name":"蛋蛋","id":"211415034","age":"24"},{"name":"闲闲","id":"211415034","age":"24"}]
        //遍历JSONArray
        for (Object stu : json_list) {
            System.out.println("stu2--------" + stu);
        }
        //stu2--------{"name":"蛋蛋","id":"211415034","age":"24"}
        //stu2--------{"name":"闲闲","id":"211415034","age":"24"}
        //复杂的json字符串
        String homeworkMap = "[{id:'211415034',name:'蛋蛋',age:'24'}, {id:'211415034',name:'闲闲',age:['24']}]";
        //对象数组字符串转List集合
        List<Student> json_map = JSON.parseArray(homeworkMap, Student.class);
        System.out.println("json_map---------" + json_map);
        //json_map---------[Student{id=211415034, name='蛋蛋', age='24'}, Student{id=211415034, name='闲闲', age='["24"]'}]
        //将List转换成JSONArray,要先转换成json字符串
        JSONArray list1 = JSONArray.parseArray(JSON.toJSONString(json_map));
        System.out.println("list1---------" + list1);
        //list1---------[{"name":"蛋蛋","id":211415034,"age":"24"},{"name":"闲闲","id":211415034,"age":"[\"24\"]"}]
        //带名称的json数组对象字符串
        String homeworkMap2 = "{data:[{id:'211415034',name:'蛋蛋',age:['24','12']}, {id:'211415034',name:'闲闲',age:['24','12']}],stud:{id:'211415034',name:'这是stud',age:'24'}}";
        //先将json字符串转化成JSONObject
        JSONObject json_hp = JSON.parseObject(homeworkMap2);
        System.out.println("json_hp--------------" + json_hp);
        //json_hp--------------{"data":[{"name":"蛋蛋","id":"211415034","age":["24","12"]},{"name":"闲闲","id":"211415034","age":["24","12"]}],"stud":{"name":"这是stud","id":"211415034","age":"24"}}
        //获取key为data的数组
        System.out.println("data--------------" + json_hp.get("data"));
        //data--------------[{"name":"蛋蛋","id":"211415034","age":["24","12"]},{"name":"闲闲","id":"211415034","age":["24","12"]}]
        //获取key为data数组的stud对象
        System.out.println("stud--------------" + json_hp.get("stud"));
        //stud--------------{"name":"这是stud","id":"211415034","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":"211415034","age":["24","12"]},{"name":"闲闲","id":"211415034","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":"211415034","age":["24","12"]}
        age2-----------24
        age2-----------12
        age-----------["24","12"]
        map-----{"name":"闲闲","id":"211415034","age":["24","12"]}
        age2-----------24
        age2-----------12
        age-----------["24","12"]*/
    }

json的分析就先到这里,后台的接收再SpringMVC中是用requestBody来进行的,可以在AJAX前天台传值的时候转成json字符串的形式,就和我后台举的例子是相同的了。如有其他错误的地方还请多多指正。

码字不易,记得收藏,点赞、评论

相关文章
|
3月前
|
JSON 前端开发 JavaScript
json字符串如何转为list对象?
json字符串如何转为list对象?
454 7
|
3月前
|
JSON JavaScript 前端开发
js如何格式化一个JSON对象?
js如何格式化一个JSON对象?
132 3
|
4月前
|
XML JSON JavaScript
JSON对象的stringify()和parse()方法使用
本文阐述了JSON对象的`stringify()`和`parse()`方法的用法,包括如何将JavaScript对象转换为JSON字符串,以及如何将JSON字符串解析回JavaScript对象,并讨论了转换过程中需要注意的事项。
JSON对象的stringify()和parse()方法使用
|
4月前
|
JSON 前端开发 中间件
React读取properties配置文件转化为json对象并使用在url地址中
本文介绍了如何在React项目中读取properties配置文件,将其内容转化为JSON对象,并在请求URL地址时使用这些配置。文章详细说明了异步读取文件、处理字符串转换为JSON对象的过程,并提供了一个封装函数,用于在发起请求前动态生成配置化的URL地址。
106 1
|
4月前
|
JSON 数据格式 Python
6-1|Python如何将json转化为字符串写到文件内 还保留json格式
6-1|Python如何将json转化为字符串写到文件内 还保留json格式
|
3月前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
2月前
|
JSON API 数据安全/隐私保护
拍立淘按图搜索API接口返回数据的JSON格式示例
拍立淘按图搜索API接口允许用户通过上传图片来搜索相似的商品,该接口返回的通常是一个JSON格式的响应,其中包含了与上传图片相似的商品信息。以下是一个基于淘宝平台的拍立淘按图搜索API接口返回数据的JSON格式示例,同时提供对其关键字段的解释
|
2月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
2月前
|
JSON 缓存 前端开发
PHP如何高效地处理JSON数据:从编码到解码
在现代Web开发中,JSON已成为数据交换的标准格式。本文探讨了PHP如何高效处理JSON数据,包括编码和解码的过程。通过简化数据结构、使用优化选项、缓存机制及合理设置解码参数等方法,可以显著提升JSON处理的性能,确保系统快速稳定运行。
|
3月前
|
JSON JavaScript Java
在Java中处理JSON数据:Jackson与Gson库比较
本文介绍了JSON数据交换格式及其在Java中的应用,重点探讨了两个强大的JSON处理库——Jackson和Gson。文章详细讲解了Jackson库的核心功能,包括数据绑定、流式API和树模型,并通过示例演示了如何使用Jackson进行JSON解析和生成。最后,作者分享了一些实用的代码片段和使用技巧,帮助读者更好地理解和应用这些工具。
218 0
在Java中处理JSON数据:Jackson与Gson库比较

热门文章

最新文章

下一篇
开通oss服务