JSON

Posted xue_yun_xiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSON相关的知识,希望对你有一定的参考价值。

一、概述

json 是一种轻量级的数据交换格式,解决的是前端和后端的数据交互易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
在这里插入图片描述

二、语法

[ ] 表示数组
{ } 表示对象
" " 表示是属性名或字符串类型的值
: 表示属性和值之间的间隔符
, 表示多个属性的间隔符或者是多个元素的间隔符

json 其实描述的是 对象,有属性,对应的属性值
属性:属性值 键值对
“属性”:“字符串”
​“属性”:数字
“属性”:布尔值
属性值必须使用“”,引用,属性于属性值之间使用:隔开,属性值如果是字符串,用引号,如果是数值/布尔,直接写

键值对 于 键值对 之间使用 , 分割
多个键值对(属性) 组成对象,使用 { }包裹
多个对象 使用,分割,使用[] 包裹组成 是数组

json 对象

{
	"id": 88,
	"name": "xiaoqiang",
	"age": 18,
	"sex": "女"
}

json数组

[{
		"id": 88,
		"name ": "xiaoqiang",
		"age": 18,
		"sex": "女"
	},
	{
		"id": 77,
		"name ": "zhansan",
		"age": 18,
		"sex": "女"
	}
]

复合json对象

{

	"status": 1,
	"message": "success",
	"data": [{
			"id": 88,
			"name ": "xiaoqiang",
			"age": 18,
			"sex": "女"
		},
		{
			"id": 77,
			"name ": "zhansan",
			"age": 18,
			"sex": "女"
		}
	]
}

三、在java 中json 和对象的相互转换

FastJson
FastJson 来自阿里,最快的json,有安全问题

Jackson解析
是springmvc 自带JackSon 解析

GJson
来自于谷歌公司

导包:
在这里插入图片描述

FastJson

package com.qfedu.json;

import com.alibaba.fastjson.JSON;
import com.qfedu.entity.Student;

import java.util.List;

public class FastJsonTest {
    public static void main(String[] args) {

        String strJson = "{\\"id\\":88,\\"name\\":\\"xiaoqiang\\",\\"age\\":18,\\"sex\\":\\"女\\"}";

        //将json字符串转换为对象
        Student student = JSON.parseObject(strJson, Student.class);
        System.out.println("student:" + student);

        //将对象转换为json
        System.out.println(JSON.toJSONString(student));

        //将json数组转换为java集合
        String listJson = "[{\\"id\\":88,\\"name\\":\\"xiaoqiang \\",\\"age\\":18,\\"sex\\":\\"女\\"},{\\"id\\":77,\\"name \\":\\"zhansan\\",\\"age\\":18,\\"sex\\":\\"女\\"}]";

        List<Student> studentList = JSON.parseArray(listJson, Student.class);
        for (Student student1 : studentList) {
            System.out.println(student1);
        }
        //将java集合转换为json数组
        System.out.println(JSON.toJSONString(studentList));
    }
}

Jackson

package com.qfedu.json;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.qfedu.entity.Student;
import com.fasterxml.jackson.core.type.TypeReference;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;


public class JacksonTest {
    public static void main(String[] args) throws IOException {

        String strJson = "{\\"id\\":88,\\"name\\":\\"xiaoqiang\\",\\"age\\":18,\\"sex\\":\\"女\\"}";

        //将json转为对象
        ObjectMapper objectMapper = new ObjectMapper();

        Student student = objectMapper.readValue(strJson, Student.class);
        System.out.println(student);
        System.out.println("**********");

        //对象转为json
        System.out.println(objectMapper.writeValueAsString(student));
        System.out.println("**********");

        //将json数组转为集合
        String listJson = "[{\\"id\\":88,\\"name\\":\\"xiaoqiang\\",\\"age\\":18,\\"sex\\":\\"女\\"},{\\"id\\":77,\\"name\\":\\"zhansan\\",\\"age\\":18,\\"sex\\":\\"女\\"}]";
        List<Student> studentList =  objectMapper.readValue(listJson, new TypeReference<ArrayList<Student>>() {
        });
        for (Student student1 : studentList) {
            System.out.println(student1);
        }
        System.out.println("**********");

        //将集合转为json
        System.out.println(objectMapper.writeValueAsString(studentList));
    }
}

四、在js中 js对象和 json 对象转换

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    // js 字符串
    var  str =  "{\\"id\\":88,\\"name\\":\\"xiaoqiang \\",\\"age\\":18,\\"sex\\":\\"女\\"}";

    // 将 str ----> js 对象
    var  student = JSON.parse(str);

    alert("student.name:"+student.name);

    // js对象 ----》json
    alert("student---str:"+JSON.stringify(student));


    // json数组
    var  listJson = "[{\\"id\\":88,\\"name\\":\\"xiaoqiang \\",\\"age\\":18,\\"sex\\":\\"女\\"},{\\"id\\":18,\\"name\\":\\"杨涛 \\",\\"age\\":18,\\"sex\\":\\"女\\"}]";

    // json数组 --->js 对象数组
    var studentList = JSON.parse(listJson);
    for (var i=0;i<studentList.length;i++){
        alert("item:"+studentList[i].name)
    }

    // js 对象数组 --->str
    alert("studentList--->json:"+JSON.stringify(studentList))
</script>
</body>
</html>

以上是关于JSON的主要内容,如果未能解决你的问题,请参考以下文章

json 可视代码工作室Angular with Firebase片段

vs code 用户代码片段 html.json

错误代码:错误域 = NSCocoaErrorDomain 代码 = 3840“JSON 文本没有以数组或对象和允许未设置片段的选项开头。”

如何在android中将json数据加载到片段中

使用 json rereiver php mysql 在片段中填充列表视图

VS Code配置markdown代码片段