JSON学习

从零开始学习JSON JSON是一种协议,与JavaScript没有必然联系。 JSON协议数据包结构本质上只有两种:JSON对象和JSON数组。 JSON非常容易学习:在了解JSON七种值定义之后,熟悉JSON对象嵌套、JSON数组嵌套以及两者混合嵌套,即可。 阅读详情
ajax提交表单时,JQuery序列化表单,生成json对象
(function($){  
        $.fn.serializeJson=function(){  
            var serializeObj={};  
            $(this.serializeArray()).each(function(){  
                serializeObj[this.name]=this.value;  
            });  
            return serializeObj;  
        };  
    })(jQuery); 
当有复选框、多选的select时:
(function($){  
        $.fn.serializeJson=function(){  
            var serializeObj={};  
            var array=this.serializeArray();  
            var str=this.serialize();  
            $(array).each(function(){  
                if(serializeObj[this.name]){  
                    if($.isArray(serializeObj[this.name])){  
                        serializeObj[this.name].push(this.value);  
                    }else{  
                        serializeObj[this.name]=[serializeObj[this.name],this.value];  
                    }  
                }else{  
                    serializeObj[this.name]=this.value;   
                }  
            });  
            return serializeObj;  
        };  
    })(jQuery);




1.JSON定义
       JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互。


       JSON语法声明了一个对象,是一种用于传输和生成数据的协定


       对象:对象包含再{}之间
       属性:采用Key-Value对来表示。属性之间使用逗号分开。  string : value 
       数组:数组存放再[]之间   [ elements ] 
       元素:元素之间用逗号分开
       值:值可以是字符串,数字,对象,数组,true,false,null


2.JSON例子
       {


        "name":"andy",


        "people":{"name":"andy","age":"28"},


        "friend":["name":"value",


                      {"name":"value","age":"28"}


                     ]


        }


3.在服务器上解释 JSON
       处理 JSON 的两步骤:
       针对编写服务器端程序所用的语言,找到相应的 JSON 解析器/工具箱/帮助器 API。 
       使用 JSON 解析器/工具箱/帮助器 API 取得来自客户机的请求数据并将数据转变成脚本能理解的东西


      


      我将介绍如何用 org.json 这个 Java API 在 Java 类上创建 toJSONObject() 方法。然后,就可以把 JSONObject简单地序列化成 JSON。


      public JSONObject toJSONObject() {
              JSONObject json = new JSONObject();
              json.put("id",id);
              json.put("cost",getFormattedCost());
              json.put("date",date);
              JSONArray jsonItems = new JSONArray();
                 for (Iterator<Item> iter = 
                              items.iterator() ; iter.hasNext() ; ) {
                                              jsonItems.put(iter.next().toJSONObject());
                               }
               json.put("items",jsonItems);
             return json;
    }


       可以看到,org.json API 非常简单。 JSONObject 代表 JavaScript 对象(即联合数组),有不同的 put() 方法,方法接受的 String 键和值是原生类型、String 类型或其他 JSON 类型。JSONArray 代表索引数组,所以它的put() 方法只接受一个值。请注意在清单 8 中,创建 jsonItems 数组,然后再用 put() 把它附加到 json 对象上;可以用另外一种方法做这项工作,就是对每个项目调用json.accumulate("items",iter.next().toJSONObject());。accumulate() 方法与 put() 类似,区别在于它把值添加到按照键进行识别的索引数组。


       清单 9 显示了如何序列化 JSONObject 并把它写入 servlet 响应。


       public void doGet(HttpServletRequest req, HttpServletResponse res) 
                        throws java.io.IOException, ServletException {
               String custId = req.getParameter("username");
                Customer customer = getCustomer(custId);
  res.setContentType("application/x-json");
  res.getWriter().print(customer.toJSONObject());
      }


可以看到,它实际上什么也没有做。在这里隐式调用的 JSONObject 的 toString() 方法做了所有工作。请注意,application/x-json 内容类型还有一点不确定 —— 在编写这篇文章的时候,关于 JSON 应当属于什么 MIME 类型还没有定论。但是,目前 application/x-json 是合理的选择。




4.在客户端使用JSON
----通过 GET 以名称/值对发送 JSON


将 JSON 数据发给服务器的最简单方法是将其转换成文本,然后以名称/值对的值的方式进行发送。请务必注意,JSON 格式的数据是相当长的一个对象,看起来可能会如清单 1 所示:
清单 1. JSON 格式的简单 JavaScript 对象
                
var people =  { "programmers": [    { "firstName": "Brett", "lastName":"McLaughlin",
"email": "brett@newInstance.com" },    { "firstName": "Jason", "lastName":"Hunter",
"email": "jason@servlets.com" },    { "firstName": "Elliotte", "lastName":"Harold",
"email": "elharo@macfaq.com" }   ],  "authors": [    { "firstName": "Isaac", 
"lastName": "Asimov", "genre": "science fiction" },    { "firstName": "Tad", 
"lastName": "Williams", "genre": "fantasy" },    { "firstName": "Frank", 
"lastName": "Peretti", "genre": "christian fiction" }   ],  "musicians": [    
{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },   
{ "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }   ]  }
 
如果要以名称/值对将其发送到服务器端,应该如下所示:


var url = "organizePeople.aspx?people=" + people.toJSONString();
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = updatePage;
xmlHttp.send(null);


存在一个问题:在 JSON 数据中会有空格和各种字符,Web 浏览器往往要尝试对其继续编译。要确保这些字符不会在服务器上(或者在将数据发送给服务器的过程中)引起混乱,需要在 JavaScript escape() 函数中做如下添加:


var url = "organizePeople.aspx?people=" + escape(people.toJSONString());
request.open("GET", url, true);
request.onreadystatechange = updatePage;
request.send(null);


该函数可以处理空格、斜线和其他任何可能影响浏览器的内容,并将它们转换成 Web 可用字符(比如,空格会被转换成 %20,浏览器并不会将其视为空格处理,而是不做更改,将其直接传递到服务器)。之后,服务器会(通常自动)再把它们转换回它们传输后的本来 “面目”。


这种做法的缺点有两个:
在使用 GET 请求发送大块数据时,对 URL 字符串有长度限制。虽然这个限制很宽泛,但对象的 JSON 字符串表示的长度可能超出您的想象,尤其是在使用极其复杂的对象时更是如此。 
在跨网络以纯文本发送所有数据的时候,发送数据面临的不安全性超出了您的处理能力。 
简言之,以上是 GET 请求的两个限制,而不是简单的两个与 JSON 数据相关的事情。在想要发送用户名和姓之外的更多内容,比如表单中的选择时,二者可能会需要多加注意。若要处理任何机密或极长的内容,可以使用 POST 请求。


----利用 POST 请求发送 JSON 数据


当决定使用 POST 请求将 JSON 数据发送给服务器时,并不需要对代码进行大量更改,如下所示:


var url = "organizePeople.php?timeStamp=" + new Date().getTime();
request.open("POST", url, true);
request.onreadystatechange = updatePage;
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
request.send(people.toJSONString());


使用 POST 而非 GET 打开,Content-Type 头被设置为让服务器预知它能得到何种数据。在这种情况下,即为 application/x-www-form-urlencoded,它让服务器知道现在发送的是文本,正如它从常规的 HTML 表单中得到的一样。
另一个简单提示是 URL 的末尾追加了时间。这就确保了请求不会在它第一次被发送后即缓存,而是会在此方法每次被调用后重新创建和重发;此 URL 会由于时间戳的不同而稍微有些不同。这种技巧常被用于确保到脚本的 POST 每次都会实际生成新请求且 Web 服务器不会尝试缓存来自服务器的响应。


 


 


 


 


 


处理的最后一步是把在客户端把 JSON 数据变成 JavaScript 对象。这可以通过对 eval() 的简单调用实现,这个函数可以即时地解释包含 JavaScript 表达式的字符串。清单 11 把 JSON 响应转变成 JavaScript 对象图


var jsonExpression = "(" + req.responseText + ")";
var customer = eval(jsonExpression);
// Find name of first item in customer's last order
var lastOrder = customer.orders[customer.orders.length-1];
var name = lastOrder.items[0].name;
lept_json的学习之JSON lept_json库的学习1 从两个星期前开始,在github上跟着叶劲峰老师的lept_json学习了一遍,现在来回顾一下整个过程,做些笔记之类的。 本人的记录风格是废话一大堆,所以不爱看的可以骂我。 一、 什么是JSON 一开始我是完全不知道json是什么的,在我初步了解完c语言,而c++还没学多少的时候,我就在github上看到了这个项目,当时看到个#ifndefine都是懵的,看叶老师讲为什么宏要写在do{}while 里面看了半天。现在看来,其实懂了就是懂了,没懂就去看懂。 JSON呢,主要有两 阅读详情

相关推荐

基于RTL8367S与XS2184的工业级POE交换机硬件设计全解析

本文深入解析基于RTL8367S与XS2184芯片的工业级POE交换机硬件设计,涵盖核心价值、芯片选型、原理图设计、PCB布局及可靠性验证等关键环节。重点探讨双芯片协同工作优势,如RTL8367S的自适应调度算法和XS2184的智能功率分配功能,为工业环境下的稳定供电与数据传输提供专业解决方案。

weixin_42614269的博客 458

json的学习

<br />自己学习json

wangjin161的专栏 725

LangChain + PlayWright实战:5分钟搞定网页自动化测试(附完整代码)

本文详细介绍了如何利用LangChain与PlayWright构建智能网页自动化测试系统。通过环境配置、核心架构设计、实战Agent构建及性能优化等步骤,开发者可以快速实现高效的Web操作自动化,提升测试效率。文章还提供了完整代码示例和典型问题解决方案。

weixin_27791839的博客 239

JSON学习总结

简介 JSON:JavaScript Object Notation JS对象简谱,是一种轻量级的数据交换格式。JSON采用了完全独立于编程语言文本格式来表示数据。 对象格式 一个对象,由一个大括号表示。 括号中,描述对象的属性与函数,通过键值对来描述对象的属性与函数。 (可以理解为,大括号中,包含的是一个个的键值对。) 格式: 键与值之间用冒号连接,多个键值对之间用逗...

梧卫清 510

光伏5G多合一融合终端|光伏多合一融合终端|光伏多合一群调群控网关|分布式光伏群控群调|光伏AGC/AVC系统这几者之间什么技术关系,多少钱一套预算?

RCL-0923光伏电站电压\功率自动控制装置(光伏AVC/AGC),能够接收调度DMS下发的调节目标(电压或无功),按既定策略的调节目标计算光伏电站无功功率出力需求,支持总有、无功,最大可调范围、逆变器个数等数据的上送,通过选择控制设备并进行无功功率出力分配,并将最终控制指令自动下达给被控制设备,最终实现光伏电站无功功率控制,实现无功功率、并网点电压的监测和控制,跟踪调度中心下发的电压或无功调节目标值,实现分布式电源的可观可测,可调可控。光伏5G多合一融合终端的功能:群调群控/AGC/AVC功能。

分布式DTU物联网DTU 2607

ESP32开发进阶:1.接入文心一言

ESP32开发进阶:接入文心一言大模型,串口对话

qq_53529450的博客 1431

学习JSON

最近学习一下JSON,在百度找到一个很好的介绍的网站:http://www.json.org/json-zh.html

Alian的专栏 713

高渗透率光伏接入配电网的电压越限与谐波治理:基于VSG构网型控制与SVG+APF联合补偿的Simulink仿真研究

本文针对高渗透率光伏接入配电网引发的电压越限和谐波畸变问题,提出了一种分层递进的综合治理方案。通过建立IEEE 33节点配电网的Simulink仿真模型,首先验证了传统跟网型控制下光伏渗透率提高导致的电压越上限(最高达1.08 p.u.)和系统谐波畸变严重(THD达8.72%)问题。进而提出:1)将部分光伏逆变器改造为构网型VSG控制,利用其无功调压能力与虚拟阻抗技术实现本地治理;2)在关键节点加装SVG+APF联合补偿装置进行全局动态无功补偿与谐波滤除。仿真结果表明,该方案能将节点电压控制在0.94-1.

huanghm88的专栏 579

json学习

应用场景说明:数据传输</</</</

m0_55471400的博客 792

使用ggplot2包中的双Y轴功能在R语言中可视化时间序列数据,并在时序数据末尾添加数值标签是一种有效的数据展示方式

使用ggplot2包中的双Y轴功能在R语言中可视化时间序列数据,并在时序数据末尾添加数值标签是一种有效的数据展示方式。通过这种方式,我们可以同时展示两个变量的趋势,并在时序数据末尾添加数值标签,使得数据更加直观和易于理解。假设我们有一个包含两个变量的时间序列数据集,一个是时间变量,另一个是对应的数值变量。现在,我们可以使用ggplot2包来创建一个基本的时间序列图,其中包含两个数值变量。接下来,我们将添加一个双Y轴,并在时序数据末尾添加数值标签。函数在数值1的每个数据点上添加数值标签。

Orion_O的博客 269

EML 全面实践指南:把 SAP RAP 业务对象玩出工程化的稳定与优雅

本文面向掌握ABAP基础、正在实施RAP的开发者,深入讲解EML(Entity Manipulation Language)的核心用法。文章围绕READ ENTITIES、MODIFY ENTITIES、COMMIT ENTITIES三大语句,详细解析其语义、类型体系、事务机制及工程实践。重点内容包括:字段裁剪、派生类型、草稿控制、批量更新、事务缓冲与保存序列等关键技术点,并配合真实案例代码。旨在帮助开发者在SAP ABAP On-Premise和BTP环境中构建可维护、可演进的业务对象访问层,同时避免常见

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 329

JSON学习教程

JSON学习教程: http://www.w3school.com.cn/json/

IWSo的专栏 1921

Vue3 - 最新实现在线预览Excel文件(xls/xlsx)多种方案,解析打开excel电子表格支持服务器链接在线URL形式、调用后端接口获取二进制文件流、文件地址(vue3实现excel预览)

vue3,预览excel文件,xlsx,xls,vue预览Excel表格,vue在线编辑xls文件,预览和编辑,vue3如何新开一页浏览器打开查看,手机h5页面打开在线EXCEL文档,在弹框中加载预览,在指定模态框中显示,基于Vue的Excel文件预览,加载失败白屏,报错没反应,详细示例代码教程,文件预览下载,nuxt3,excel预览插件,xlsx插件预览,纯前端vue中预览excel表格,接口调用的文件如何预览查看,文件url地址,vue移动端实现excel在线预览,vue移动端H5网页excel预览,

🏆 前端领域优质创作者 1万+

json学习 json格式处理

json学习 json格式处理 json数据格式: 规范的格式应该是包括数据返回状态(一般就是false/true),状态码(比如200,7000) ,消息(比如“获取数据成功”/“获取数据失败”),数据对象 @RestController注解 例子1: 有这样一个页面 , 用来显示用户的账户记录数据,并且需要显示每个月的 收入 支出合计 ,在分页的时候涉及到一些问题,需要对返回的Json格式做处理,处理起来比较麻烦,后端返回的Json数据格式形式如下: { "code": "0", "result

shanlijia的博客 753

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

json学习路线

• 示例项目:https://github.com/nlohmann/json/tree/develop/examples。// ========== 更多内容请参考官方文档:https://json.nlohmann.me ==========• m_type + m_value 是 basic_json 的底层结构(C++17 以前用手写 union)// 建议阅读 test/src/parse.cpp 和 test/src/operator.cpp。// 转成字符串(2 表示缩进)

SmileHergo的博客 1426

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

JSON学习网址!

很不错的JSON学习网址这里Mark一下! http://www.json.org/json-zh.html 和 http://www.w3school.com.cn/json/index.asp 曾经利用JSON+curl实现两个系统互相通信,但是用的JSON最简单的object形式。在这推荐qianjin0703的http://blog.youkuaiyun.com/qianjin0703

小九的专栏 1591

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【学习笔记】JSON学习笔记

我是灼灼,一只初学Java的大一金渐层。 向往余秀华和狄兰·托马斯的疯狂,时常沉溺于将情感以诗相寄;追逐过王尔德、王小波的文字,后陷于毛姆和斯蒂芬·金不可自拔;热爱文学的浪潮,白日梦到底却总在现实里清醒;艳羡平静又极度渴盼奔跑的力量。 欢迎与我交流鸭· QQ:1517526827; 个人博客:https://blog.youkuaiyun.com/weixin_52777510?spm=1001.2101.3001.5343 JSON 学习笔记 之前有在java中学习过JSON的使用! 内容来自菜鸟教程:JSON.

weixin_52777510的博客 852

Json学习总结

Json学习API文档查询:http://www.w3school.com.cn/json/Json极客学院相关视频:http://www.jikexueyuan.com/course/220.htmlJson参考例子(没有亲测,,谁做小白鼠):链接:http://pan.baidu.com/s/1gdPRcVx密码:c5xx集成Json到项目中案例:http://down....

weixin_34001430的博客 366

JSON快速学习入门

title: JSON author: CodeCheng top: false cover: false toc: true mathjax: false tags: 前端 json categories: 前端 json summary: JSON是一种轻量级的数据交换格式。 abbrlink: 5d92c8f1 date: 2021-03-07 09:46:01 img: coverImg: password: JSON JSON JSON: JavaScript Object Notatio.

Zz_cheng的博客 786

JSON学习笔记

JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。我们最常使用的存储数据的方式有很多,比如利用txt文件存,利用xml存,利用word存,利用Excel存,如果我们要求比较高,还可以使用数据库存。(2)父子节点的形式,这种方法可以定义更为复杂的形式,缺点就是定义起来较为麻烦。在一级对象后直接跟不同的二级对象作为区分,并针对二级对象进行赋值或添加的操作。定义的JSON数据结构如下。

菜一头包的博客 807

azure机器学习_如何在Azure机器学习中使用JSON数据

azure机器学习 Azure Machine Learning (also known as Azure ML) is cloud-based machine learning solution of Microsoft. Microsoft Azure Machine Learning is a fully-managed cloud-based service that provide...

culuo4781的博客 467
上一篇: mysql explain的详解
下一篇: JSON入门教程
HackProgramer
博客等级 码龄12年 255粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值