json基础(代码片段)

再来半包 再来半包     2022-12-13     261

关键词:

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库... 查看详情