一文了解JSON
什么是 JSON?
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。
JSON
采用完全独立于语言的文本格式,而且很多语言都提供了对 json 的支持(包括 C, C++, C#, Java, JavaScript, Perl, Python
等)。 这样就使得 JSON 成为理想的数据交换格式。
json 是一种轻量级的数据交换格式。
轻量级指的是跟 xml 做比较。
数据交换指的是客户端和服务器之间业务数据的传递格式。
JSON 在JavaScript 中的使用。
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_2_1":6621,
  "key6_2_2":"key6_2_2_value"
  }]
};
json 的访问
json 本身是一个对象。
json 中的 key 我们可以理解为是对象中的一个属性。
json 中的 key 访问就跟访问对象的属性一样: json 对象.key
json 访问示例:
alert(typeof(jsonObj));// object json 就是一个对象
alert(jsonObj.key1); //12
alert(jsonObj.key2); // abc
alert(jsonObj.key3); // true
alert(jsonObj.key4);// 得到数组 [11,"arr",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
alert( jsonObj.key6 );// 得到 json 数组
// 取出来每一个元素都是 json 对象
var jsonItem = jsonObj.key6[0];
// alert( jsonItem.key6_1_1 ); //6611
alert( jsonItem.key6_1_2 ); //key6_1_2_value
json 的两个常用方法
json 的存在有两种形式。
一种是:对象的形式存在,我们叫它 json 对象。
一种是:字符串的形式存在,我们叫它 json 字符串。
一般我们要操作 json 中的数据的时候,需要 json 对象的格式。
一般我们要在客户端和服务器之间进行数据交换的时候,使用 json 字符串。
JSON.stringify() 把 json 对象转换成为 json 字符串
JSON.parse() 把 json 字符串转换成为 json 对象
示例代码:
// 把 json 对象转换成为 json 字符串
var jsonObjString = JSON.stringify(jsonObj); // 特别像 Java 中对象的 toString
alert(jsonObjString)
// 把 json 字符串。转换成为 json 对象
var jsonObj2 = JSON.parse(jsonObjString);
alert(jsonObj2.key1);// 12
alert(jsonObj2.key2);// abc
JSON 在 在 java 中的使用
javaBean 和 和 json 的互转
@Test
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);
  // fromJson 把 json 字符串转换回 Java 对象
  // 第一个参数是 json 字符串
  // 第二个参数是转换回去的 Java 对象类型
  Person person1 = gson.fromJson(personJsonString, Person.class);
  System.out.println(person1);
}
List 和 和 json 的互转
@Test
public void test2() {
  List<Person> personList = new ArrayList<>();
  personList.add(new Person(1, " 张三"));
  personList.add(new Person(2, " 李四"));
  Gson gson = new Gson();
  // 把 List 转换为 json 字符串
  String personListJsonString = gson.toJson(personList);
  System.out.println(personListJsonString);
  List<Person> list = gson.fromJson(personListJsonString, new PersonListType().getType());
  System.out.println(list);
  Person person = list.get(0);
  System.out.println(person);
}
map 和 和 json 的互转
@Test
public void test3(){
  Map<Integer,Person> personMap = new HashMap<>();
  personMap.put(1, new Person(1, " 张三"));
  personMap.put(2, new Person(2, " 李四"));
  Gson gson = new Gson();
  // 把 map 集合转换成为 json 字符串
  String personMapJsonString = gson.toJson(personMap);
  System.out.println(personMapJsonString);
  // Map<Integer,Person> personMap2 = gson.fromJson(personMapJsonString, new
  PersonMapType().getType());
  Map<Integer,Person> personMap2 = gson.fromJson(personMapJsonString, new
  TypeToken<HashMap<Integer,Person>>(){}.getType());
  System.out.println(personMap2);
  Person p = personMap2.get(1);
  System.out.println(p);
}
欢迎关注公众号:愚生浅末。
一文了解JSON的更多相关文章
- 一文解读JSON (转)
		JSON作为目前Web主流的数据交换格式,是每个IT技术人员都必须要了解的一种数据交换格式.尤其是在Ajax和REST技术的大行其道的当今,JSON无疑成为了数据交换格式的首选! 今天我们一起来学习一 ... 
- 原生JS:JSON对象详解
		JSON对象 支持到IE8,旧版的IE需要Polyfill 本文参考MDN做的详细整理,方便大家参考[MDN](https://developer.mozilla.org/zh-CN/docs/Web ... 
- json.dump()和json.dmups()的区别
		在python中支持json合适的数据是通过json模块实现的. 在序列化json数据的时候遇到两个形状很像的函数,dump()和dumps().主要说说他们的区别 先看看官方文档的说明:https: ... 
- elasticsearch 文档阅读笔记(三)
		文档 elasticsearch是通过document的形式存储数据的,个人理解文档就是一条数据一个对象 我们添加索引文档中不仅包含了数据还包含了元数据 比如我们为一个数据添加索引 文档中不仅有jso ... 
- Elasticsearch 7.x 之文档、索引和 REST API 【基础入门篇】
		前几天写过一篇<Elasticsearch 7.x 最详细安装及配置>,今天继续最新版基础入门内容.这一篇简单总结了 Elasticsearch 7.x 之文档.索引和 REST API. ... 
- Elasticsearch必知必会的干货知识一:ES索引文档的CRUD
		 若在传统DBMS 关系型数据库中查询海量数据,特别是模糊查询,一般我们都是使用like %查询的值%,但这样会导致无法应用索引,从而形成全表扫描效率低下,即使是在有索引的字段精确值查找,面对海量数 ... 
- javaScript系列 [09]-javaScript和JSON (拓展)
		本文输出JSON搜索和JSON转换相关的内容,是对前两篇文章的补充. JSON搜索 在特定的开发场景中,如果服务器端返回的JSON数据异常复杂(可能超过上万行),那么必然就有对JSON文档进行搜索的需 ... 
- 文心大模型api使用
		文心大模型api使用 首先,我们要获取硅谷社区的连个key 复制两个api备用 获取Access Token 获取access_token示例代码 之后就会输出 作文创作 作文创作:作文创作接口基于文 ... 
- jQuery系列:Ajax
		1. load(url, [data], [callback]) 1.1 解析 载入远程 HTML 文件代码并插入至 DOM 中. 语法格式: load(url, [data], [callback] ... 
- ElasticSearch(站内搜索)
		简介 Elasticsearch是一个实时的分布式搜索和分析引擎.它可以帮助你用前所未有的速度去处理大规模数据.它可以用于全文搜索,结构化搜索以及分析,当然你也可以将这三者进行组合.Elasticse ... 
随机推荐
- 金蝶云·苍穹追光者开发大赛,点燃高校AI应用创新之火
			在 2024 年的政府工作报告中,"人工智能 +" 行动被提出,标志着人工智能成为推动我国新质生产力发展的关键力量.与此同时,今年的高考作文有一道题目也聚焦于人工智能,再次凸显了这 ... 
- React中的Ref
			React中ref是一个对象,它有一个current属性,可以对这个属性进行操作,用于获取DOM元素和保存变化的值.什么是保存变化的值?就是在组件中,你想保存与组件渲染无关的值,就是JSX中用不到的或 ... 
- Spring注解之参数校验@Validated和@Valid
			@Validated和@Valid的区别 Spring Validation验证框架对参数的验证机制提供了@Validated(Spring's JSR-303 规范,是标准 JSR-303 的一个变 ... 
- Unable to start web server; nested exception is org.springframework.context.ApplicationContextException
			项目报错:Unable to start web server; nested exception is org.springframework.context.ApplicationContextE ... 
- 小产品,快变现,Solo社区共建者 James 专访
			采访人:徐小夕. 本次受邀采访的嘉宾是Solo社区计划负责人&Solo社区联合创建者 James Pan(老潘). 专访内容 1. Solo社区创建的背景 随着国内软件市场内卷加剧,加上大环境 ... 
- 让摄像头带上智慧“智驭视界·AIEye”
			接上一篇<物联网浏览器(IoTBrowser)-基于计算机视觉开发的应用"智慧眼AIEye">,经过AI的包装很高级,确实很屌炸天. 智驭视界·AIEye 在科技赋能的 ... 
- django 信号判断是新增、修改还是删除
			在Django的信号处理器中,你可以使用一些方法来确定信号是关于新增(create).修改(update)还是删除(delete)的.这通常涉及到检查 created 和 instance 参数的值. ... 
- oeasy教您玩转vim - 72 - # 缩写abbreviation
			 缩写abbreviation 回忆上次折叠的细节 这次了解到了:mkview.:loadview 保存和加载视图 可以把当前的状态保存下来 可以在 viewoption 中配置保存选项,设置哪些需 ... 
- AT_abc178_d 题解
			洛谷链接&Atcoder 链接 本篇题解为此题较简单做法及较少码量,并且码风优良,请放心阅读. 题目简述 给定一个正整数 \(S\),问有多少个数满足以下条件: 序列中必须为 \(\ge 3\ ... 
- 题解:CF1918B Minimize Inversions
			CF1918B Minimize Inversions 思路 暴力 一个一个的算,复杂度巨大. 数学规律 让逆序最少,也就是让升序更多.我们可以通过多组数据实验,最终我们会发现,将数列 \(A\) 减 ... 
