关键词:
JSON
导读模块
发展史:21世纪初,Douglas Crockford寻找一种简便的数据交换格式,
能够在服务器之间交换数据。当时通用的数据交换语言是XML,
但是Douglas Crockford觉得XML的生成和解析都太麻烦,
所以他提出了一种简化格式,也就是Json。
JSON:是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率
轻量级是指跟xml作比较。
数据交换指的是客户端和服务器之间业务数据的传递格式。
简而言之:是存储数据的一种方式/格式
与之类似的技术有:xml
JSON 语法规则
json的定义
json是由键值对组成,并且由花括号(大括号)包围。每个键由引号引起来,键和值之间使用冒号进行分割,多组键值对之间使用逗号进行分割。
var jsonObj=
"key1":12,
"key2":"abc",
"key3":true,
"key4":[11,"arr",false],
"key5":
"key5_1":551,
"key5_2":"key5_2_value"
,
"key6":[
"key6_1_1":6611,
"key6_1_2":"key6_1_2_value"
,
"key6_1_1":6621,
"key6_1_2":"key6_2_2_value"
]
json的访问
json本身就是一个对象
json中的key我们可以理解为是对象中的一个属性。
json中的key访问就跟访问对象的属性一样:json对象.key
alert(typeof (jsonObj));//Object json就是一个对象
alert(jsonObj.key1);//12
alert(jsonObj.key2);//abc
alert(jsonObj.key3);//true
alert(jsonObj.key4)//得到数组[11,"才",false]
//json中数组值的遍历,可以通过下标去访问
for (var i=0;i<jsonObj.key4.length;i++)
alert(jsonObj.key4[i]);
alert(jsonObj.key5.key5_1);//551
alert(jsonObj.key5.key5_2);//key5_2_value
for (var j=0;j<jsonObj.key6.length;j++)
var jsonob=jsonObj.key6[j];//取出来每一个元素都是json对象
alert(jsonob.key6_1_1);
alert(jsonob.key6_1_2)
json的两个常用方法
json的两种存在形式
1、对象形式存在,json对象
2、字符串形式村子,json字符串
一般我们要操作json中的数据的时候,需要json对象的格式。
一般我们要在客户端和服务器之间进行数据交换的时候,使用json字符串。
json.stringify() 把json对象转换成json字符串
json.parse() 把json字符串转换成为json对象
JSON 在java中的使用
javaBean和json的互转
public void test1()
Person person=new Person("杨过",1);
//创建Gson对象实例
Gson gson =new Gson();
//toJson方法可以把java对象转换成为Json字符串
String personJsonString=gson.toJson(person);
System.out.println(personJsonString);//"name":"杨过","id":1
//fromJson把字符串转换回java对象
//第一个参数是json字符串
//第二个参数是转换回去的Java对象类型
Person person1= gson.fromJson(personJsonString,Person.class);
//Person person2=gson.fromJson(personJsonString,person.getclass());
System.out.println(person1);//Personname='杨过', id=1
以上代码可以看到,在对一个对象进行toJson方法的时候,他会转变成一个Json字符串,但是如果想要转回java对象,则需要使用fromJson,而且参数为两个,第一个是Json字符串,第二个为java对象的类型,类名.class或者定义好的对象名.getclass()
List和json的互转
public void test2()
List<Person> personList =new ArrayList<>();
//personList中添加两个Person对象
personList.add(new Person("杨过",1));
personList.add(new Person("小龙女",2));
Gson gson=new Gson();
//通过toJson()方法将List转换为Json字符串
String personListJsonString=gson.toJson(personList);
System.out.println(personListJsonString);
//通过fromJson()方法将Json字符串转为Java集合
//第一个参数为要转的Json字符串
//第二个参数为TypeToken<T>的匿名类
List<Person> list=gson.fromJson(personListJsonString,new TypeToken<List<Person>>().getType());
System.out.println(list);
Person person = list.get(0);
System.out.println(person);
/*
运行结果
["name":"杨过","id":1,"name":"小龙女","id":2] Json字符串
[Personname='杨过', id=1, Personname='小龙女', id=2] Json字符串转回的List
Personname='杨过', id=1 Json字符串转回List中的元素
*/
Json字符串转换为List与Json字符串转换为JavaBean不同在于from的第二个参数,转换为JavaBean需要javaBean类的class,而List 的话,第二个参数为一个TypeToken的匿名类,而这个泛型为List 的类型,也可以通过去定义一个ListType的类,去继承TypeToken类,在第二个参数后面进行new ListType这个TypeToken的子类实现Json字符串转回JavaList
map和json的互转
public void test3()
Map<Integer,Person> personMap=new HashMap<>();
//为personMap集合中添加两个Person对象
personMap.put(1,new Person("磊哥",1));
personMap.put(2,new Person("航哥",1));
Gson gson = new Gson();
//把map集合转换成为Json字符串
String personMapJsonString =gson.toJson(personMap);
Map<Integer,Person> personMap1 = gson.fromJson(personMapJsonString, new TypeToken<Map<Integer,Person>>().getType());
System.out.println(personMap1);
Person per=personMap1.get(1);
System.out.println(per);
/*
打印结果
1=Personname='磊哥', id=1, 2=Personname='航哥', id=1
Personname='磊哥', id=1
*/
Json字符串转回Map与Json字符串转回List大体一样,不同的就是new的TypeToken类的泛型,要与之要转回的类型相同
java基础-json解析(代码片段)
JSONJSON格式概述JavaScriptObjectNotationJSON数据格式与语言无关。即便它源自JavaScript,但目前很多编程语言都支持JSON格式数据的生成和解析。JSON的官方MIME类型是application/json,文件扩展名是.json数据格式JSON对象"ID":1,"n... 查看详情
爬虫基础(代码片段)
数据提取的概念和数据的分类1.什么是数据提取简单的来说,数据提取就是从响应中获取我们想要的数据的过程2.爬虫中数据的分类结构化数据:json,xml等处理方式:直接转化为python类型非结构化数据:HTML处理方式:正则表达式... 查看详情
javascript入门:前后端交互基础(dom,json,ajax)(代码片段)
JavaScript入门(4):前后端交互基础(DOM,JSON,AJAX)参考教程图灵星球js入门教程文章目录JavaScript入门(4):前后端交互基础(DOM,JSON,AJAX)1.DOM引入简介DOM树JavaScript控制DOM主要方式:DOM的精彩解释2.JSON引入简介语法特征将JSON转换成JavaScrip... 查看详情
了解php数据转json格式与前端交互基础(代码片段)
php数据转json格式与前端交互ArryJson1.php<?php$test=array();$word=array("我12","要43","把23","你65","们7","全87","都","吃","掉79&quo 查看详情
python根据json数据画疫情分布地图(代码片段)
目录一.基础地图使用1.掌握使用pyecharts构建基础的全国地图可视化图表二.疫情地图——国内疫情地图1.案例效果代码三.疫情地图——省级疫情地图 四.数据集 注:数据集在文章最后一.基础地图使用1.掌握使用pyecharts构建基... 查看详情
protocolbuffer基础(代码片段)
我们知道接口传输数据的格式有XML,它是webservices使用的传输数据的格式,在webservices中叫WSDL。https://www.w3school.com.cn/wsdl/index.asp不过webServices已经是被淘汰的技术了。现在更是主流的是使用JSON作为数据传输格式。HTTP+JSON是黄金搭... 查看详情
node.js--ajax编程基础(代码片段)
文章目录Ajax基础Ajax运行原理及实现XMLHttpRequest对象Ajax的实现步骤服务器端响应的数据格式---JSON请求参数传递GET请求方式POST请求方式请求报文请求参数的格式(包含JSON格式)【案例】向服务器端传递json格式的请求参数... 查看详情
webpack学习整理(基础)(代码片段)
LearnWebPack生成package.json文件npminit-y局部安装npminstallwebpackwebpack-cli-D使用局部安装打包方式1:npxwebpack方式2:在package.json中“script”中新增“build”字段"scripts":"build":"webpack",然 查看详情
小程序基础-自定义组件(代码片段)
自定义组件类似vue或者react中的自定义组件1创建自定义组件类似于页面,一个自定义组件由json,wxml,wxss,js四个文件组成在微信开发者工具中快速创建组建的文件结构,在文件夹内components/Tabs,创建组件名为为Tabs声明组件⾸先需要在组... 查看详情
.netcore基础之读取配置文件(代码片段)
一、通过nuget安装扩展包需要安装如下扩展包Microsoft.Extensions.ConfigurationMicrosoft.Extensions.Configuration.BinderMicrosoft.Extensions.Configuration.Json 二、在启动项目中新建json文件"Name":"Alan.hsiang","Age":20,"Sex":"male","Like":["basketball","football","swimm... 查看详情
go语言学习笔记—基础—复合数据类型—结构体:使用匿名结构体分离json数据(代码片段)
手机拥有屏幕、电池、指纹识别等信息,把这些信息填充为json格式的数据。如果需要选择性地分离json中的数据较麻烦,但使用go的匿名结构体可以方便实现。json数据分离packagemainimport( "encoding/json" "fmt" "test... 查看详情
json-server30秒无代码搭建一个完整的restapi服务-基础入门(代码片段)
场景在公司进行React或者Vue项目开发的过程中,在后端尚未准备好接口时,我们需要进行数据mock来实现页面渲染、模拟前后端交互。之前我们都是这么做的:1.采用本地静态数据json的方式来模拟接口数据,但是这种方式我们只能... 查看详情
什么是接口测试?接口测试基础案例及json格式详解(代码片段)
很多小伙伴可能会说接口真的有测试的必要吗?我只要把功能测试好了不就ok了吗?答案是肯定的,在中大型项目中,后端、前端多人协同开发过程中,接口测试是必要的。什么是接口(API)测试?API全... 查看详情
1.基础入门(代码片段)
第一步创建UserServicepackageServicestypeIUserServiceinterfaceGetName(useridint)stringtypeUserServicestructfunc(thisUserService)GetName(useridint)stringifuserid==101return"jerry"return"guest"第二部:创建UserEndPointpackageServicesimport("context""github.com/go-kit/kit/endpoint")typeUserReque... 查看详情
django基础之视图(views)层模板层(代码片段)
目录Django基础之视图(views)层、模板层JsonResponse向前端返回一个json格式字符串的两种方式重写Django中的json的某个方法form表单上传文件FBV与CBVFBVCBV最精髓的部分Djangosettings源码分析及实际应用模板传值过滤器(|)标签前端if标签前端f... 查看详情
androidjson基础(代码片段)
一.JSON基础知识1.几个例子 1.例子:Array里面包含对象(object)["id":1,"name":"小猪","age":22,"id":2,"name":"小猫","age":23] Array里面的对象数据是有序的 查看详情
k8s之资源清单定义基础(代码片段)
第1章创建资源的方法1.1用命令的方式创建创建一个pod为例kubectlcreatepodapp1.2资源清单定义注意:apiserver只接受JSON格式的格式定义的资源,yaml写的配置清单spiserver会自动将其转化为JSON格式然后再次进行提交为什么我们写资源清单方... 查看详情
[序列化协议]---json(代码片段)
1.json的基础语法和规范1.1json是什么-JSON指的是JavaScript对象表示法(JavaScriptObjectNotation)-JSON是轻量级的文本数据交换格式-JSON独立于语言:JSON使用Javascript语法来描述数据对象,但是JSON仍然独立于语言和平台。JSON解析器和JSON库... 查看详情