`
黑男爵
  • 浏览: 8100 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Concept of JSON

    博客分类:
  • JSP
阅读更多

深入浅出JSON

Author:Truly

JSON定义

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。它基于ECMA262语言规范(1999-12第三版)中JavaScript 编程语言的一个子集。 JSON采用与编程语言无关的文本格式,但是也使用了类C语言(包括C, C++, C#, Java, JavaScript, Perl, Python等)的习惯,这些特性使JSON成为理想的数据交换格式。

JSON的结构基于下面两点

    * 1. "名称/值"对的集合 不同语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),键列表(keyed list)等
    * 2. 值的有序列表 多数语言中被理解为数组(array)

JSON使用:

JSON以一种特定的字符串形式来表示 JavaScript 对象。如果将具有这样一种形式的字符串赋给任意一个 JavaScript 变量,那么该变量会变成一个对象引用,而这个对象就是字符串所构建出来的,好像有点拗口,我们还是用实例来说明。

这里假设我们需要创建一个User对象,并具有以下属性
# 用户ID
# 用户名
# 用户Email

您可以使用以下JSON形式来表示User对象:

{"UserID":11, "Name":"Truly", "Email":"zhuleipro◎hotmail.com"};
 

然后如果把这一字符串赋予一个JavaScript变量,那么就可以直接使用对象的任一属性了。

完整代码:

 

<script>

var User = {"UserID":11, "Name":"Truly", "Email":"zhuleipro◎hotmail.com"};
alert(User.Name);
</script>


实际使用时可能更复杂一点,比如我们为Name定义更详细的结构,使它具有FirstName和LastName:

{"UserID":11, "Name":{"FirstName":"Truly","LastName":"Zhu"}, "Email":"zhuleipro◎hotmail.com"}


完整代码:

<script>

var User = {"UserID":11, "Name":{"FirstName":"Truly","LastName":"Zhu"}, "Email":"zhuleipro◎hotmail.com"};
alert(User.Name.FirstName);
</script>
 

现在我们增加一个新的需求,我们某个页面需要一个用户列表,而不仅仅是一个单一的用户信息,那么这里就需要创建一个用户列表数组。
下面代码演示了使用JSON形式定义这个用户列表:

[
{"UserID":11, "Name":{"FirstName":"Truly","LastName":"Zhu"}, "Email":"zhuleipro◎hotmail.com"},
{"UserID":12, "Name":{"FirstName":"Jeffrey","LastName":"Richter"}, "Email":"xxx◎xxx.com"},
{"UserID":13, "Name":{"FirstName":"Scott","LastName":"Gu"}, "Email":"xxx2◎xxx2.com"}
]
 

完整代码:

<script>
var UserList = [
{"UserID":11, "Name":{"FirstName":"Truly","LastName":"Zhu"}, "Email":"zhuleipro◎hotmail.com"},
{"UserID":12, "Name":{"FirstName":"Jeffrey","LastName":"Richter"}, "Email":"xxx◎xxx.com"},
{"UserID":13, "Name":{"FirstName":"Scott","LastName":"Gu"}, "Email":"xxx2◎xxx2.com"}
];
alert(UserList[0].Name.FirstName);
</script>
 

事实上除了使用"."引用属性外,我们还可以使用下面语句:

alert(UserList[0]["Name"]["FirstName"]); 或者 alert(UserList[0].Name["FirstName"]); 

 

现在读者应该对JSON的使用有点认识了,归纳为以下几点:
# 对象是属性、值对的集合。一个对象的开始于“{”,结束于“}”。每一个属性名和值间用“:”提示,属性间用“,”分隔。
# 数组是有顺序的值的集合。一个数组开始于"[",结束于"]",值之间用","分隔。
# 值可以是引号里的字符串、数字、true、false、null,也可以是对象或数组。这些结构都能嵌套。
# 字符串和数字的定义和C或Java基本一致。

小节:

本文通过一个实例演示,初步了解了JSON 的强大用途。可以归结如下:
# JSON 提供了一种优秀的面向对象的方法,以便将元数据缓存到客户机上。
# JSON 帮助分离了验证数据和逻辑。
# JSON 帮助为 Web 应用程序提供了 Ajax 的本质。

参考资料:
http://www.json.org/

 

分享到:
评论

相关推荐

    JavaScript and JSON Essentials2018

    users will be introduced to the concept of JSON with padding, called JSONP. Chapter 5, Debugging JSON, explains the powerful tools that are available to debug, validate, and format JSON. Chapter 6, ...

    json-live:[EXPERIMENT PROOF-OF-CONCEPT] 热重载 JSON 文件而不会丢失应用程序状态

    json直播 在文件更改时实时更新 JSON 对象,而不会破坏应用程序状态。 这是动画和快速 UI 开发的理想选择。 这以服务器和 browserify 转换的形式出现,但不需要更改前端代码。 例子: var data = require ( './...

    看雪2017安全开发者峰会ppt-10.Java_JSON反序列化之殇

    在Fastjson中,PoC(Proof of Concept,概念验证)常被用于证明某些安全漏洞的存在。为了防御这些漏洞,开发者需要关注和修复Fastjson的已知漏洞,并谨慎使用其高级特性。 #### Java反序列化防御 Java反序列化漏洞...

    json_feeds-flask-website-proof_of_concept

    标题中的"json_feeds-flask-website-proof_of_concept"暗示了一个使用Flask框架构建的微型内容管理系统(CMS),该系统专注于处理JSON数据源。Flask是一个轻量级的Python Web开发框架,非常适合构建小型或中等规模的...

    github-bigdata:用于将 json 文件从 githubarchive.org 转换为 .parquet 文件的 PoC

    标题中的“github-bigdata”项目是一个证明概念(Proof of Concept, PoC)示例,它展示了如何将从githubarchive.org获取的JSON数据转换为Parquet文件格式。Parquet是一种高效、跨平台的数据存储格式,特别适合大数据...

    IP-I-R-proof-of-concept

    标题 "IP-I-R-proof-of-concept" 暗示我们关注的是一个关于互联网协议、身份验证或信息安全性方面的概念验证项目。描述中的内容相同,没有提供额外信息,但标签 "JavaScript" 提示我们这个项目可能使用了 JavaScript...

    利用 Fastjson 注入 Spring 内存马,太秀了~!(csdn)————程序.pdf

    以下是一个简单的 POC (Proof of Concept) JSON 字符串,展示了如何利用 Fastjson 的反序列化漏洞: ```json {"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://192.168.x.x:1389/Exploit",...

    TUI_CMS_POC:基于TUI JSON的CMS的POC

    TUI_CMS_POC是一个关于使用TUI JSON构建内容管理系统(CMS)的概念验证(Proof-of-Concept,POC)。这个项目主要展示了如何利用TUI JSON的技术来搭建一个功能完备、易于维护的CMS系统。TUI JSON是一种轻量级的数据...

    Fastjson1.2.47以及之前的所有版本

    在提供的压缩包中,"fastjson_poc.txt"可能是用来验证这些漏洞的Proof of Concept(POC)代码。POC是一种演示漏洞可行性的代码或步骤,通常用于安全研究人员测试和证明漏洞的存在。用户应避免运行此POC代码,除非在...

    typescript-results:一个简单的 poc TypeScript Web 应用程序,它解析包含结果记录的 json 文件,并最终会做一些有趣的事情

    `typescript-results` 是一个基于 TypeScript 的 Proof of Concept(PoC)Web 应用程序,旨在演示如何利用 TypeScript 处理 JSON 数据并构建交互式的Web应用程序。TypeScript 是 JavaScript 的超集,提供静态类型、...

    fastjsonHelloWorld

    **POC(Proof of Concept)的含义与作用** POC,即概念验证,是一种证明特定漏洞实际存在的方法。在网络安全领域,POC通常是一个简单的程序或脚本,它能重现漏洞,展示其危害性。对于Fastjson的反序列化漏洞,一个...

    Packt.Swift.Developing.iOS.Applications.2016

    The third and the last module of our course will take an example-based approach where each concept covered is supported by example code to not only give you a good understanding of the concept, but ...

    FastJson漏扫.zip

    `FastJson.exe`很可能是一个用于执行FastJson漏洞扫描的程序或工具,而`fastjson_poc.txt`可能包含Proof-of-Concept(PoC)代码,这些代码用于验证潜在的漏洞。PoC代码是简洁的代码片段,用来证明一个特定的安全漏洞...

    restful restful所需要的jar包

    * Concept of "URIs as UI" supported based on the URI Templates standard. This results in a very flexible yet simple routing with automatic extraction of URI variables into request attributes. * ...

    Knockout API 中文版

    jQuery doesn’t have a concept of an underlying data model, so to get the number of items you have to infer it from the number of TRs in a table or the number of DIVs with a certain CSS class....

    Mastering.Swift.1784392154

    Each concept covered is backed up with example code and demonstrates how to properly execute it. Next, you will be taught about all of the advanced features of Swift, and its interaction with Apple's...

    card-io:使用redux的小型任务列表资源分配应用程序。 BE是用于demoPoC的带有json-server的虚假API

    这个项目主要是为了演示Proof of Concept(PoC),即概念验证,它使用了一个名为"json-server"的假后端API来模拟真实的数据交互。下面是关于这个项目的关键知识点和详细解释: 1. **React**: - React是Facebook...

Global site tag (gtag.js) - Google Analytics