【03】json使用

 

把 JSON 文本转换为 JavaScript 对象

JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSON 数据转换为 JavaScript 对象,然后在网页中使用该数据。为了更简单地为您讲解,我们使用字符串作为输入进行演示(而不是文件)。

JSON 实例 - 来自字符串的对象(字符串转JavaScript对象)

创建包含 JSON 语法的 JavaScript 字符串:

  1. var txt ='{ "employees" : ['+
  2. '{ "firstName":"Bill" , "lastName":"Gates" },'+
  3. '{ "firstName":"George" , "lastName":"Bush" },'+
  4. '{ "firstName":"Thomas" , "lastName":"Carter" } ]}';
 

由于 JSON 语法是 JavaScript 语法的子集,JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。

eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误:

(魔芋:也就是说eval() 类似浏览器的编译器,可以编译解析JavaScript)

  1. var obj = eval ("("+ txt +")");
  2. console.log(obj);

或者,使用 JavaScript 内置函数 JSON.parse() 将字符串转换为 JavaScript 对象:

  1. var obj = JSON.parse(text);
 
 

在网页中使用 JavaScript 对象:

例子

  1. <p>
  2. FirstName:<span id="fname"></span><br />
  3. LastName:<span id="lname"></span><br />
  4. </p>
  5. <script type="text/javascript">
  6. document.getElementById("fname").innerHTML = obj.employees[1].firstName
  7. document.getElementById("lname").innerHTML = obj.employees[1].lastName
  8. </script>
 
 

JSON数据格式和Serialize数据格式的异同和使用

相同的:
1,都是把其他数据类型转换成一个可以传输的字符串
2,都是结构性数据
 
不同的:
1,Serialize序列化的数据格式保存数据原有类型
2,JSON数据格式要更简洁,相比Serialize序列化之后的数据格式
 
 
使用场景:
1,JSON适合数据量大,不要求保留原有数据类型的情况下使用
2,Serialize适合存储带有加密方式的数据称,防止数据被中途截取反序列化破解。
 
 
 
 

例子:

<?php

function createHtmlTag($tag =""){
return"<h1>$tag</h1><br/>";
} createHtmlTag("JSON和Serialize对比");
$member = array("username","age");
var_dump($member); ?>
 

例子:

 
<?php
header("Content-type:text/html;charset=utf-8");
function createHtmlTag($tag =""){
echo "<h1>$tag</h1><br/>";
} createHtmlTag("JSON和Serialize对比");
$member = array("username","age");
var_dump($member);
$jsonObj = json_encode($member);
$serializeObj = serialize($member);
createHtmlTag($jsonObj);
createHtmlTag($serializeObj); ?>
 
 
 
 

JSON 解析器

提示:eval() 函数可编译并执行任何 JavaScript 代码。这隐藏了一个潜在的安全问题。
使用 JSON 解析器将 JSON 转换为 JavaScript 对象是更安全的做法。JSON 解析器只能识别 JSON 文本,而不会编译脚本。在浏览器中,这提供了原生的 JSON 支持,而且 JSON 解析器的速度更快。较新的浏览器和最新的 ECMAScript (JavaScript) 标准中均包含了原生的对 JSON 的支持。
Web 浏览器支持 Web 软件支持
  • Firefox (Mozilla) 3.5
  • Internet Explorer 8
  • Chrome
  • Opera 10
  • Safari 4
  • jQuery
  • Yahoo UI
  • Prototype
  • Dojo
  • ECMAScript 1.5

对于较老的浏览器,可使用 JavaScript 库:
https://github.com/douglascrockford/JSON-js

JSON 格式最初是由 Douglas Crockford 制定的。

【03】json使用的更多相关文章

  1. [开源]JSON文本格式化工具(简码万能助手开源扩展程序)

    现在的网站大多都是使用json进行API式前后端数据交互, 有时抓包得到的是一串没格式化的JSON文本, 不太方便分析, 所以我自行写了个开源扩展程序, 可以方便地格式化JSON文本.   当然,你也 ...

  2. 我为NET狂群福利:逆天常用的一些谷歌浏览器插件

    逆天书库:http://www.cnblogs.com/dunitian/p/5734677.html 常用工具:http://www.cnblogs.com/dunitian/p/5640147.h ...

  3. 微冷的雨ASP.NET MVC之葵花宝典(MVC)

    微冷的雨ASP.NET MVC之葵花宝典 By:微冷的雨 第一章 ASP.NET MVC的请求和处理机制. 在MVC中: 01.所有的请求都要归结到控制器(Controller)上. 02.约定优于配 ...

  4. 逸鹏说道公众号福利:逆天常用的一些谷歌浏览器插件V1.3

    插件导出:http://www.cnblogs.com/dunitian/p/5426552.html 插件导入:https://www.cnblogs.com/dotnetcrazy/p/97537 ...

  5. 分析Ajax爬取今日头条街拍美图-崔庆才思路

    站点分析 源码及遇到的问题 代码结构 方法定义 需要的常量 关于在代码中遇到的问题 01. 数据库连接 02.今日头条的反爬虫机制 03. json解码遇到的问题 04. 关于response.tex ...

  6. PHP. 03 .ajax传输XML、 ajax传输json、封装

    XML简介 XML 指可扩展标记语言 EXtensible Markup Language .射击的时候是用来船体数据的,虽然格式跟HTML类似 xml示例 <?xml version=&quo ...

  7. 03标准对象-01-Date和JSON

    0.写在前面的话 在JS世界中,一切都是对象,区别对象类型使用tyepof,返回一个字符串,如: typeof 123; // 'number' typeof NaN; // 'number' typ ...

  8. Jmeter 03 Jmeter断言之Json断言

    json断言可以让我们很快的定位到响应数据中的某一字段,当然前提是响应数据是json格式的,所以如果响应数据为json格式的话,使用json断言还是相当方便的. 还是以之前的接口举例 Url: htt ...

  9. 【03】Python 文件读写 JSON

    1 打开文件 文件操作步骤: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件 3.关闭文件. 1.1 打开方法 f = open('xxx.txt') #需f.close( ...

随机推荐

  1. Hibernate的表之间的关系

    表:A.B 一对多关系:A中的一个字段的记录(主键)引用B中的多个记录(外键) 多对一关系:A中的一个字段的记录(外键)引用B中的一个记录(主键) 一对一关系:A.B两个表的关联字段都是主键 多对多关 ...

  2. bzoj1076: [SCOI2008]奖励关(期望dp+状压dp)

    1076: [SCOI2008]奖励关 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2989  Solved: 1557[Submit][Statu ...

  3. 给独立搭建的博客启用https的过程

    申请SSL证书 我自己独立搭建的博客部署在阿里云服务器上,因此我就先搜索阿里云启用https的方法,网上有比较详细的讲解,在此提供一个参考网址: https://blog.csdn.net/csluc ...

  4. SAP中的货币与金额

  5. 第三章 K近邻法(k-nearest neighbor)

    书中存在的一些疑问 kd树的实现过程中,为何选择的切分坐标轴要不断变换?公式如:x(l)=j(modk)+1.有什么好处呢?优点在哪?还有的实现是通过选取方差最大的维度作为划分坐标轴,有何区别? 第一 ...

  6. linux Java环境变了配置

    1. sudo /etc/profile 2.安装截图配置 输入javac 进行验证

  7. composer查看安装情况

    composer install --no-progress --profile -vvv

  8. 解决:阿里云ECS上启动tomcat后,第一次访问时间特别长

    Re在ECS上启动tomcat后,第一次访问时间特别长      2017-04-25 10:16:04 INFO com.world.socket.ServerSocketListener  25- ...

  9. JavaScript 正则表达式(转自 mozilla)

    正则表达式是被用来匹配字符串中的字符组合的模式.在JavaScript中,正则表达式也是对象. 这种模式可以被用于 RegExp 的 exec 和 test 方法以及 String 的 match.r ...

  10. Markdown基本语法学习

    Markdown是一种纯文本格式的标记语言.通过简单的标记语法,它可以使普通文本内容具有一定的格式. 创始人 John Gruber 的 Markdown 语法说明 Markdown 中文版语法说明 ...