JSON入门教程

【低空经济】低空无人机公共测试场与验证基地设计方案 公共测试场与验证基地是为低空无人机相关技术的研发、测试与应用提供一个系统性的平台。在无人机产业蓬勃发展的背景下,建设一个配备完善、功能齐全的公共测试场与验证基地显得尤为重要。该基地不仅可以作为无人机的测试和验证场地,还可以为相关企业、科研机构以及政府部门提供技术支持和服务。因此,为此基地的设计方案必须综合考虑功能性、安全性、灵活性与可持续性等多方面的因素。首先,公共测试场需划分为多个专用区域,以便满足不同类型无人机的测试需求。这包括低空飞行区域、紧急着陆区、操控模拟区和监测与数据采集区等。 阅读详情

尽管有许多宣传关于 XML 如何拥有跨平台,跨语言的优势,然而,除非应用于 Web Services,否则,在普通的 Web 应用中,开发者经常为 XML 的解析伤透了脑筋,无论是服务器端生成或处理 XML,还是客户端用 JavaScript 解析 XML,都常常导致复杂的代码,极低的开发效率。实际上,对于大多数 Web 应用来说,他们根本不需要复杂的 XML 来传输数据,XML 的扩展性很少具有优势,许多 AJAX 应用甚至直接返回 HTML 片段来构建动态 Web 页面。和返回 XML 并解析它相比,返回 HTML 片段大大降低了系统的复杂性,但同时缺少了一定的灵活性。

  现在, JSON 为 Web 应用开发者提供了另一种数据交换格式。让我们来看看 JSON 到底是什么,同 XML 或 HTML 片段相比,JSON 提供了更好的简单性和灵活性。

  JSON 数据格式解析

  和 XML 一样,JSON 也是基于纯文本的数据格式。由于 JSON 天生是为 JavaScript 准备的,因此,JSON 的数据格式非常简单,您可以用 JSON 传输一个简单的 String,Number,Boolean,也可以传输一个数组,或者一个复杂的 Object 对象。

  String,Number 和 Boolean 用 JSON 表示非常简单。例如,用 JSON 表示一个简单的 String “ abc ”,其格式为:

"abc"

  除了字符 ",,/ 和一些控制符(b,f,n,r,t)需要编码外,其他 Unicode 字符可以直接输出。

一个 Number 可以根据整型或浮点数表示如下:

 这与绝大多数编程语言的表示方法一致,例如:

12345(整数)
-3.9e10(浮点数)

  Boolean 类型表示为 true 或 false 。此外,JavaScript 中的 null 被表示为 null,注意,true、false 和 null 都没有双引号,否则将被视为一个 String 。

  JSON 还可以表示一个数组对象,使用 [] 包含所有元素,每个元素用逗号分隔,元素可以是任意的 Value,例如,以下数组包含了一个 String,Number,Boolean 和一个 null:

["abc",12345,false,null]

  Object 对象在 JSON 中是用 {} 包含一系列无序的 Key-Value 键值对表示的,实际上此处的 Object 相当于 Java 中的 Map<String, Object>,而不是 Java 的 Class 。注意 Key 只能用 String 表示。

  例如,一个 Address 对象包含如下 Key-Value:

city:Beijing
street:Chaoyang Road
postcode:100025(整数)

  用 JSON 表示如下:

{"city":"Beijing","street":" Chaoyang Road ","postcode":100025}

  其中 Value 也可以是另一个 Object 或者数组,因此,复杂的 Object 可以嵌套表示,例如,一个 Person 对象包含 name 和 address 对象,可以表示如下:

{"name":"Michael","address":
  {"city":"Beijing","street":" Chaoyang Road ","postcode":100025}
}

JavaScript 处理 JSON 数据

  上面介绍了如何用 JSON 表示数据,接下来,我们还要解决如何在服务器端生成 JSON 格式的数据以便发送到客户端,以及客户端如何使用 JavaScript 处理 JSON 格式的数据。

  我们先讨论如何在 Web 页面中用 JavaScript 处理 JSON 数据。我们通过一个简单的 JavaScript 方法就能看到客户端如何将 JSON 数据表示给用户:

function handleJson() {
 var j={"name":"Michael","address":
   {"city":"Beijing","street":" Chaoyang Road ","postcode":100025}
 };
 document.write(j.name);
 document.write(j.address.city);
}

  假定服务器返回的 JSON 数据是上文的:

{"name":"Michael","address":
  {"city":"Beijing","street":" Chaoyang Road ","postcode":100025}
}

  只需将其赋值给一个 JavaScript 变量,就可以立刻使用该变量并更新页面中的信息了,相比 XML 需要从 DOM 中读取各种节点而言,JSON 的使用非常容易。我们需要做的仅仅是发送一个 Ajax 请求,然后将服务器返回的 JSON 数据赋值给一个变量即可。有许多 Ajax 框架早已包含了处理 JSON 数据的能力,例如 Prototype(一个流行的 JavaScript 库:http://prototypejs.org)提供了 evalJSON() 方法,能直接将服务器返回的 JSON 文本变成一个 JavaScript 变量:

new Ajax.Request("http://url", {
 method: "get",
 onSuccess: function(transport) {
  var json = transport.responseText.evalJSON();
  // TODO: document.write(json.xxx);
 }
});

服务器端输出 JSON 格式数据

  下面我们讨论如何在服务器端输出 JSON 格式的数据。以 Java 为例,我们将演示将一个 Java 对象编码为 JSON 格式的文本。

  将 String 对象编码为 JSON 格式时,只需处理好特殊字符即可。另外,必须用 (") 而非 (') 表示字符串:

[java]  view plain copy
  1. static String string2Json(String s) {  
  2.   StringBuilder sb = new StringBuilder(s.length()+20);  
  3.   sb.append('"');  
  4.   for (int i=0; i<s.length(); i++) {  
  5.     char c = s.charAt(i);  
  6.     switch (c) {  
  7.     case '"':  
  8.       sb.append(""");  
  9.       break;  
  10.     case '':  
  11.       sb.append("");  
  12.       break;  
  13.     case '/':  
  14.       sb.append("/");  
  15.       break;  
  16.     case 'b':  
  17.       sb.append("");  
  18.       break;  
  19.     case 'f':  
  20.       sb.append("f");  
  21.       break;  
  22.     case 'n':  
  23.       sb.append("  
  24. ");  
  25.       break;  
  26.     case 'r':  
  27.       sb.append("  
  28. ");  
  29.       break;  
  30.     case 't':  
  31.       sb.append("  ");  
  32.       break;  
  33.     default:  
  34.       sb.append(c);  
  35.     }  
  36.   }  
  37.   sb.append('"');  
  38.   return sb.toString();  
  39. }  

将 Number 表示为 JSON 就容易得多,利用 Java 的多态,我们可以处理 Integer,Long,Float 等多种 Number 格式:

static String number2Json(Number number) {
  return number.toString();
}

  Boolean 类型也可以直接通过 toString() 方法得到 JSON 的表示:

static String boolean2Json(Boolean bool) {
  return bool.toString();
}

  要将数组编码为 JSON 格式,可以通过循环将每一个元素编码出来:

[java]  view plain copy
  1. static String array2Json(Object[] array) {  
  2.   if (array.length==0)  
  3.     return "[]";  
  4.   StringBuilder sb = new StringBuilder(array.length << 4);  
  5.   sb.append('[');  
  6.   for (Object o : array) {  
  7.     sb.append(toJson(o));  
  8.     sb.append(',');  
  9.   }  
  10.   // 将最后添加的 ',' 变为 ']':  
  11.   sb.setCharAt(sb.length()-1, ']');  
  12.   return sb.toString();  
  13. }  

  最后,我们需要将 Map<String, Object> 编码为 JSON 格式,因为 JavaScript 的 Object 实际上对应的是 Java 的 Map<String, Object> 。该方法如下:

[java]  view plain copy
  1. static String map2Json(Map<String, Object> map) {  
  2.   if (map.isEmpty())  
  3.     return "{}";  
  4.   StringBuilder sb = new StringBuilder(map.size() << 4);  
  5.   sb.append('{');  
  6.   Set<String> keys = map.keySet();  
  7.   for (String key : keys) {  
  8.     Object value = map.get(key);  
  9.     sb.append('"');  
  10.     sb.append(key);  
  11.     sb.append('"');  
  12.     sb.append(':');  
  13.     sb.append(toJson(value));  
  14.     sb.append(',');  
  15.   }  
  16.   // 将最后的 ',' 变为 '}':  
  17.   sb.setCharAt(sb.length()-1, '}');  
  18.   return sb.toString();  
  19. }  

为了统一处理任意的 Java 对象,我们编写一个入口方法 toJson(Object),能够将任意的 Java 对象编码为 JSON 格式:

[java]  view plain copy
  1. public static String toJson(Object o) {  
  2.   if (o==null)  
  3.     return "null";  
  4.   if (o instanceof String)  
  5.     return string2Json((String)o);  
  6.   if (o instanceof Boolean)  
  7.     return boolean2Json((Boolean)o);  
  8.   if (o instanceof Number)  
  9.     return number2Json((Number)o);  
  10.   if (o instanceof Map)  
  11.     return map2Json((Map<String, Object>)o);  
  12.   if (o instanceof Object[])  
  13.     return array2Json((Object[])o);  
  14.   throw new RuntimeException("Unsupported type: " + o.getClass().getName());  
  15. }  

  我们并未对 Java 对象作严格的检查。不被支持的对象(例如 List)将直接抛出 RuntimeException 。此外,为了保证输出的 JSON 是有效的,Map<String, Object> 对象的 Key 也不能包含特殊字符。细心的读者可能还会发现循环引用的对象会引发无限递归,例如,精心构造一个循环引用的 Map,就可以检测到 StackOverflowException:

@Test(expected=StackOverflowError.class)
public void testRecurrsiveMap2Json() {
  Map<String, Object> map = new HashMap<String, Object>();
  map.put("key", map);
  JsonUtil.map2Json(map);
}

  好在服务器处理的 JSON 数据最终都应该转化为简单的 JavaScript 对象,因此,递归引用的可能性很小。

 

  最后,通过 Servlet 或 MVC 框架输出 JSON 时,需要设置正确的 MIME 类型(application/json)和字符编码。假定服务器使用 UTF-8 编码,则可以使用以下代码输出编码后的 JSON 文本:

response.setContentType("application/json;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
PrintWriter pw = response.getWriter();
pw.write(JsonUtil.toJson(obj));
pw.flush();

  小结

  JSON 已经是 JavaScript 标准的一部分。目前,主流的浏览器对 JSON 支持都非常完善。应用 JSON,我们可以从 XML 的解析中摆脱出来,对那些应用 Ajax 的 Web 2.0 网站来说,JSON 确实是目前最灵活的轻量级方案。

欢乐熊大话蓝牙知识16:蓝牙是怎么找设备的?扫描与广播的“对话内幕” 蓝牙是怎么找设备的?扫描与广播的对话技术介绍 阅读详情

相关推荐

单目和多目视觉统一标定

单目和多目视觉统一标定 一.单目视觉标定 在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定(或摄像机标定)。无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。因此,做好相机标定是做好后续工作的前提,提高标定精度是科研工作的重点所在

吴建明wujianming_110117 2911

RPA入门到精通—【UiBot】高阶篇

RPA的全称为机器人流程自动化(Robotic Process Automation),是一款软件产品,可模拟人在电脑上的不同系统之间操作行为,替代人在电脑前执行具有规律与重复性高的办公流程。来也科技是中国乃至全球的 RPA+AI 行业领导者,为客户提供变革性的智能自动化解决方案,提升组织生产力和办公效率,释放员工潜力,助力政企实现智能时代的人机协同。UiBot 使用软件技术模拟人工对目标系统(ERP、OA、SAP、浏览器、Excel等各类软件)进行各种操作,实现对企业或个人工作的业务流程自动化,从而大幅降低人力成本的投入,作为替代品更高效、更稳定、更低投入的完成被赋予的工作。

一文详细讲解CRM系统(附架构图、流程、功能介绍)

专为中小企业量身打造高性价比的数字化转型路径!企业如何用CRM才能真正做到降本增效?今天,就用一文讲清这些问题!读完本文,你将清楚得了解CRM的概念、框架、流程、功能、企业成功案例,文末还有常见问题解答。

Dabeishandong的博客 9928

JSON详细教程

JSON是一种轻量级的数据交换格式,全称为JavaScript Object Notation(JavaScript对象表示法)。它以易于阅读和编写的文本格式来表示结构化数据,常用于在客户端和服务器之间传递数据。 JSON的格式简单、灵活,易于理解和使用。与XML相比,JSON更加轻量级,占用更少的数据空间,并且解析速度更快。因此,它在Web开发中广泛应用于数据传输、配置文件和API交互等方面。

小田是个程序员的博客欢迎你的到来呀~ 5766

LinuxMint 22.1(Ubuntu24.04)下通过Wine完美运行同花顺远航版的实战指南

本文详细介绍了在LinuxMint 22.1(Ubuntu24.04)系统下通过Wine完美运行同花顺远航版的实战指南。从基础环境准备到深度优化,包括Wine环境配置、同花顺远航版安装、字体显示调优、任务栏兼容性修复等关键步骤,帮助Linux用户高效使用同花顺远航版进行股票交易和行情分析。

weixin_30919429的博客 571

晶圆测试(Wafer Sort)的核心技术与良率提升策略

晶圆测试(Wafer Sort)是芯片制造中的关键“入学考试”,通过探针台与自动测试设备(ATE)对晶圆上的芯片进行功能与参数测试,筛选不合格芯片以控制成本。本文深入解析了其核心技术,包括自动化视觉系统对准、测试流程优化策略,并探讨如何利用测试数据驱动良率提升,展望了DFT与AI智能测试的未来趋势。

e4f5g6h的博客 517

JSON教程(非常详细)

之前写过有关C语言JSON库:【C语言开源库】在Clion上使用开源库cJSON; JSON和XML的对比:JSON vs XML,为什么JSON更好? 下面就好好来了解一下JSON。 文章目录JSON是什么?什么是 JSON?JSON 发展史为什么要使用 JSON?JSON 的不足JSON 应该如何存储?什么时候会使用 JSON1) 定义接口2) 序列化3) 生成 Token4) 配置文件总结JSON语法规则JSON 中的键JSON 中的值JSON 与 JavaScript 对象的区别JSON数据类型.

qq_41854911的博客 8846

西门子200SMART PID温控实战:从配置到避坑(附加热棒控制案例)

本文详细介绍了西门子200SMART PLC在PID温控系统中的实战应用,涵盖硬件配置、PID参数整定及工程避坑技巧。通过加热棒控制案例,重点解析了信号处理、固态继电器选型、断电保持和无扰切换等关键问题,为工业自动化领域的温度控制提供可靠解决方案。

weixin_28727975的博客 356

一份简单的JSON教程(个人学习笔记)

json

m0_60980259的博客 1934

TPC好像是这么回事儿

TPC(Transmit Power Control)发送功率控制,本觉得就是控制一下发送功率,原理很简单,但看原版协议死活每搞懂什么意思,恼羞成怒!!!! 后来又看了一些贴子和cisco的相关功能介绍,再回头看协议,好像是这么一回事: 1、所谓TPC,是AP控制STA的发送功率的一种手段。在802.11d中,已定义了使用Country Element传递区域无线通信规定的信道和最大发送功率信息: 通过获取这些信息,STA可以确定自己应该遵守什么规则,可以用什么发送功率在哪些信道上通信。 2

两只勤劳的蜜蜂 8630

DeerFlow 系列教程 第四篇 | Sandbox 沙箱与 Sub-agent 子智能体协作详解

DeerFlow 系列教程第四篇介绍了两个关键子系统:Sandbox 沙箱系统和Sub-agent子智能体协作机制。沙箱系统通过虚拟路径映射、权限白名单、命令审计和容器隔离四重机制,为Agent提供安全的代码执行环境,使其能在隔离环境中执行文件操作和脚本运行。系统采用分层架构设计,包含应用层、工具层、审计层等,核心是定义标准交互接口的抽象基类。虚拟路径系统将Agent操作的虚拟路径映射到实际路径,确保安全性。这些功能使DeerFlow从对话助手进化为能处理复杂任务的Super Agent平台。

weixin_43674738的博客 284

JSON(json)详细教程

一、什么是JSON? JSON 是用于存储和传输数据的格式。 JSON 通常用于服务端向网页传递数据 。 JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON JSON 具有自

qq_51366851的博客 9734

OpenHarmony 显示Display驱动全栈解析:DisplayLayer + Gralloc + Gfx 三位一体,打造高性能图形底座

OpenHarmony Display显示驱动模块是系统图形渲染和显示功能的基础组件,负责管理显示设备、图层渲染、内存分配等核心功能。该模块采用HDI(Hardware Driver Interface)设计架构,为上层图形服务提供统一的显示能力接口,实现了显示设备的初始化、图层管理、内存分配与映射、硬件加速等关键功能。DisplayLayer:负责显示图层的管理, 包括图层创建、显示属性设置、图层填充及刷新等操作;

m0_67505153的博客 315

JSON 和 cJSON 库入门教程

首先,文章解释了 JSON 是一种轻量级、易于人类阅读和机器解析的数据交换格式。它基于 JavaScript 的一个子集,但独立于语言,由对象(无序键值对,用花括号 {} 包裹)和数组(有序值集合,用方括号 [] 包裹)组成。JSON 支持字符串、数字、布尔值 (true/false)、null、对象和数组等数据类型。 接着,文章重点介绍了 cJSON,一个用标准 ANSI C 编写的超轻量级 JSON 解析器和生成器,非常适合 ESP32 等资源受限的系统。

weixin_52342399的博客 1113

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

JSON-Server 极速入门教程

快速搭建测试环境模拟后端 API进行前端开发测试学习 REST API 概念现在你可以开始使用 JSON-Server 来加速你的开发流程了!

不懂先生的博客 1059

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

JSON Web Token(JWT) 入门教程

阮一峰老师的JSON Web Token(JWT) 入门教程

Jack_Tpy的Java学习之旅 325

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Vue-Json-View 框架入门教程

Vue-Json-View 框架入门教程 1. 项目目录结构及介绍 Vue-Json-View 是一个用于在 Vue.js 应用中展示 JSON 文件的组件。其目录结构如下: . ├── build # 构建脚本目录 │ └── ... ├── dist # 构建输出目录,包含编译后的 JS 和 CSS ├── mock...

gitblog_00131的博客 728

json入门教程

json入门教程 1.简介 JSON是JavaScript Object Notation的缩写,它是一种数据交换格式。JSON实际上是JavaScript的一个子集。 2.数据类型 在JSON中,一共就这么几种数据类型: - number:和JavaScript的number完全一致; - boolean:就是JavaScript的true或false; - strin...

T-dreaming博客 384

Android解析JSON入门教程

基于java操作的JSON入门教程 尽管有许多宣传关于 XML 如何拥有跨平台,跨语言的优势,然而,除非应用于 Web Services,否则,在普通的 Web 应用中,开发者经常为 XML 的解析伤透了脑筋,无论是服务器端生成或处理 XML,还是客户端用 JavaScript 解析 XML,都常常导致复杂的代码,极低的开发效率。实际上,对于大多数 Web 应用来说,他们根本不需要复杂

魔术师 878

JSON 入门教程

JSON 全称JavaScript Object Notation(JavaScript 对象表示法)是一种轻量级、纯文本的数据交换格式;独立于编程语言,前后端、不同语言之间通用;语法借鉴 JS 对象,但有严格语法限制,不是 JS 对象。JSON 主要用来跨程序 / 前后端传递、保存结构化数据,是 web 开发数据交换的通用标准。JSON 是纯文本数据格式,键必须双引号、仅 6 种基础值、无注释、无多余逗号、全英文标点、布尔 /null 小写。,需手动传event获取事件对象。

2503_94205631的博客 287

json11入门教程

Json11,C++ 解析json

ox0080的博客 746

史上最全的JSON入门教程读懂这篇带你玩转JSON

JSON是大家再熟悉不过的一门数据格式了,它具有很多优点,比如占用带宽比较小(格式是压缩的)、js可以通过eval()读取、支持多种语言(C、C++、JAVA、PHP等等),我们日常开发中用的比较多的是对json进行封装和解析,这块内容也是我们必须去掌握的,所以我花了一点时间对json的各种封装个解析做了一个详细的教程,方便初学者快速上手入门 什么是JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它使得人们很容易的进行阅读和编写。同时也方便了机器进行

zhangbinch的博客 6152

JSON介绍及简单入门教程

JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式,类似 XML但比 XML 更小、更快,更易解析 初识 JSON是Web开发领域最知名的技术权威Douglas Crockford创造     JSON 指的是 JavaScript 对象表示法(JavaScript Ob

小朱 738

JSON Web Token 入门教程

作者:阮一峰 日期:2018年7月23日 JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案,本文介绍它的原理和用法。 一、跨域认证的问题 互联网服务离不开用户认证。一般流程是下面这样。 1、用户向服务器发送用户名和密码。 2、服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色、登录时间等等。 3、服务器向用户返回一个 session_id,写入用户的 Cookie。 4、用户随后的每一次请求,都会通过 Cookie,将 sessi..

心境 250
上一篇: JSON学习
下一篇: mysql中数据类型不一样用IF查会出错
HackProgramer
博客等级 码龄12年 255粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值