1. 什么是JSON

  • JSON 是 JavaScript Object Notation 简写,是一种轻量级的数据交换格式。
  • JSON 是 JS 对象的字符串表示法,它使用纯文本表示一个 JS 对象的信息,本质是一个字符串。
  • JSON 与 XML 文档相比较,JSON 格式的数据比 XML 更加易于读取,解析速度更快,而且JSON存储的数据比XML更小;没有XML文档复杂的标签。
  • JSON 独立于编程语言和平台之外,支持各种不同的编程语言进行JSON解析。

2. JSON 的表示

JSON 数据支持两种表示,分别是对象表示、数组表示。

2.1 对象表示法

对象表示法是在大括号 { } 中进行书写,一个JSON对象可以包含多个 key/value(键/值)对,key 必须是字符串,value 可以是合法的 JSON 数据类型( 字符串, 数字, 对象, 数组, 布尔值或 null ),key 和 value 中使用冒号 (:) 分割,每个 key/value 对使用逗号 (,) 分割。

/* JSON 对象表示法 */obj = {     "name":"runoob",     "alexa":10000,     "site":null ,    "address":"henan-xinyang",    "Tel":12345678900}

JSON对象表示法

2.2 数组表示法

JSON 数组在中括号 [ ] 中书写,JSON 中数组值必须是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null),JavaScript 中,数组值可以是以上的 JSON 数据类型,也可以是 JavaScript 的表达式,包括函数,日期,及 undefined 。

/* 数组表示法 */arrObj = [ "HeNan", "XinYang", "MyHome" ]         

json数组表示法

2.3 嵌套表示

JSON数据格式非常灵活,可以在一个对象里嵌套一个数组,也可以在数组里嵌套一个对象或另外一个数组。

/*  JSON 的嵌套表示以及访问格式  *//* 1. 对象属性的值value可以是一个数组 */obj1 = {        "username":"Tom",        "age":20,        "address":["shanghai","jiading","hongshilu"]        }/* 数组大小知道前提下:访问读取 "jiading"  */var x = obj1.address[1];/* 数组大小未知时:for-in 循环读取 */for (i in obj1.address) {    x += obj1.address[i] + "";}/* 2. JSON 对象中数组可以包含另外一个数组,或者另外一个 JSON 对象 */ obj2= {        "username":"网站",        "age":3,        "address": [            {                 "province":"shanghai",                "city":[ "jiading", "hongshilu"]            },            {                 "province":"henan",                 "city":[ "xinyang", "xixian"]             }         ]      }/* for-in 遍历访问每个元素值 */for (i in obj2.address) {    x += "

" + obj2.address[i].province+ "

"; for (j in obj2.address[i].city) { x += obj2.address[i].city[j] + "
"; }}/* 根据索引访问其中一个 : 如 xixian */var xx = obj2.address[1].city[1];/* 3. 对象属性值可以是一个对象 */obj3 = { "username":"马云", "salary":100, "address":{ "province":"上海", "city","嘉定红世路" } }var x1 = obj3.address.province + obj3.address["city"];

json嵌套表示

3. JSON 的转换

  • JSON.parse() 将服务端返回的JSON字符串格式的数据转换成JSON对象进行访问,这个字符串必须严格是JSON格式的。

/* 服务端返回的json字符串在前端解析成JSON对象 */

var obj = JSON.parse('{ "username":"老王", "salary":10000, "city":"日本" }');

var x = obj.uesrname;

  • JSON.stringify() 用于向服务端提交数据,将JavaScript对象转成符合JSON格式的字符串。

var obj = { "username":"老王", "salary":10000, "city":"日本"};

var jsonStr= JSON.stringify(obj); /* 前端可以将 jsonStr 字符串发送到服务端 */

今天就简单的讲解下JSON相关知识,熟能生巧,只有多练习,多运用,才能发现更多的问题。

更多学习可以关注我的CSDN博客 https://blog.csdn.net/qq_31414433

希望自己接下来能坚持写下去,分享更多!收获更多!

给自己打个气!!!

json解析对应的value为null_JSON 学习笔记第一天——初识相关推荐

  1. main 函数解析(二)—— Linux-0.11 学习笔记(六)

    main函数解析(二)--Linux-0.11 学习笔记(六) 4.6 blk_dev_init函数 void blk_dev_init(void) {int i;for (i=0 ; i<NR ...

  2. main函数解析(一)——Linux-0.11 学习笔记(五)

    main()函数解析(一)--Linux-0.11 学习笔记(五) 经过了前面的各种铺垫,终于来到了main函数.这篇博客的任务是把init/main.c讲清楚.由于牵扯到很多的函数调用,要想一次就说 ...

  3. 《Go语言圣经》学习笔记 第一章 Go语言入门

    Go语言圣经学习笔记 第一章 Go语言入门 目录 Hello, World 命令行参数 查找重复的行 GIF动画 获取URL 并发获取多个URL Web服务 本章要点 注:学习<Go语言圣经&g ...

  4. extjs 提交表单给php,JavaScript_Extjs学习笔记之二 初识Extjs之Form,Extjs中的表单组件是Ext.form.Basic - phpStudy...

    Extjs学习笔记之二 初识Extjs之Form Extjs中的表单组件是Ext.form.BasicForm,不过最简单最常用的是Ext.form.FormPanel控件,它继承自Panel,具有一 ...

  5. PhalAPI学习笔记 ——— 第一章自定义HelloWorld接口

    PhalAPI学习笔记 --- 第一章自定义HelloWorld接口 前言 自定义接口 项目实例 结果 分布解析 结束语 前言 公司业务需要转学PHP,而PHP中一个功能强大且生态链完整的PHP接口框 ...

  6. 视觉SLAM十四讲学习笔记-第二讲-初识SLAM

    专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 "定位"和"建图",可以看成感知的"内外之分". ...

  7. 编译原理(龙书)学习笔记 第一章

    编译原理(龙书)学习笔记 第一章 1.1语言处理器 解释器(interpreter) : 编译器(compiler): 一个语言处理系统 练习 1.1.1:编译器和解释器之间的区别 1.1.2:相对优 ...

  8. 惯性导航系统学习笔记——第一讲

    惯性导航系统学习笔记 第一讲 惯性导航系统概述 一.惯性导航基本概念 二.惯性导航基本原理 三.惯性导航应用与发展 四.小结 第一讲 惯性导航系统概述 本文为学习朱家海教授<惯性导航系统> ...

  9. Pyhton学习笔记第一天(Python基本语句)

    Python学习笔记第一天 注释 行注释 块注释 输出语句 举一反三 标识符 举一反三 多行语句 结束语 注释 什么是注释,注释相当于备注的信息,也可以在调试代码的时候隐藏执行代码,但只适合新手.老手 ...

最新文章

  1. 差分阻抗为多少_谈谈差分信号
  2. ubuntu之使用sublime text3搭建Python IDE
  3. 额外篇 | ggplot (下)
  4. 代理模式在Spring 源码中的应用
  5. C# 使用TCP创建HTTP客户程序
  6. java开发用怎么软件开发_Java 9中的5个功能将改变您开发软件的方式(还有2个不会)...
  7. python执行一段代码_我发现了个 Python 黑魔法,执行任意代码都会自动念上一段 『平安经』...
  8. (七)准备在云中训练深度伪造模型
  9. Qualcomm Atheros ar9285 连不上 tp link无线 的 问题
  10. 总结一下常用web.config公共配置。
  11. MonthCalendar的mousedown方法选择日期
  12. 批量导出pdf 和导出图片
  13. 10年测试经验分享:新手怎么找软件测试的项目?
  14. 语音视频SDK的回声消除技术是如何实现的
  15. Android Studio : Unfortunately you can't have non-Gradle Java modules and Android-Gradle modules
  16. 前有天猫生鲜和易果生鲜 系出阿里“同门”的盒马鲜生要怎么走?
  17. 根据身份证号码生成生日和性别
  18. CAN采样点设置为多少合适?设置不对会咋样?
  19. 中文数字和阿拉伯数字之间互相转化
  20. Android studio 和 gradle插件版本对应关系(最新 2022年)

热门文章

  1. C++中重载与重写函数区别及虚函数(转载)
  2. c语言程序设计 黄建灯,C语言程序设计教学改革
  3. hashmap应用场景_Redis 5种数据结构 及使用场景分析
  4. Android与Js交互时,屏幕不适配问题
  5. java栈和队列验证回文串_栈和队列的基本操作及其应用(回文判断)
  6. 带圆圈大小的散点图_Python数据可视化,Matplotlib绘制“散点图”的两种方法!...
  7. 高速信号传输约翰逊 pdf_学习笔记之传输线基础
  8. python是如何实现进程池和线程池的_进程、线程、线程池和协程如何理解?
  9. was java sdk_关于WAS9单独安装SDK的问题?
  10. bigdecimal如何做除法_公务员行测朴素逻辑解题技巧—代入排除法