转载请注明出处王亟亟的大牛之路

供应商A:那我们数据怎么交互啊?HTTP吧?那内容呢?JSON?XML?

小菜鸟B:JSON什么鬼?

为了菜鸟们避免以上情况楼主写一发JSON的博文,废话不多!開始!

先梳理下概念

1.JSON是什么

JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)

JSON 是轻量级的文本数据交换格式

JSON 独立于语言 *

JSON 具有自我描写叙述性,更易理解

JSON 使用 Javascript语法来描写叙述数据对象,可是 JSON 仍然独立于语言和平台。

JSON 解析器和 JSON 库支持很多不同的编程语言。

眼下非常多的动态(PHP,JSP。.NET)编程语言都支持JSON。



2.JSON和XML的同样点以及不同点

同样:

JSON 是纯文本

JSON 具有”自我描写叙述性”(人类可读)

JSON 具有层级结构(值中存在值)

JSON 可通过 JavaScript 进行解析

JSON 数据可使用 AJAX 进行传输

不同:

没有结束标签

更短

读写的速度更快

可以使用内建的 JavaScript eval() 方法进行解析

使用数组

不使用保留字

样例:

简单的JSON对象

{
"name": "wjj"
}
简单的样例。这是一个叫name的json对象,属性是字符串wjj。
{
"action": 123
}
我们办了变,他如今有一个属性。只是是int型的。值是123. 在我们人工读的时候,非常轻易就能解读那一段json字符串

JSON的数据类型

JSON 值可以是:

数字(整数或浮点数)
字符串(在双引號中)
逻辑值(true 或 false)
数组(在方括号里)
对象(在花括号里)
null

实例

要被解析的json字符串

{
"phone": [
"1000000",
"2000000"
],
"name": "wjj",
"age": 20,
"address": {
"country": "china",
"province": "shanghai"
},
"married": false
}

上面这段json字符串简单的说明了一个人的一些属性,各种类型的数据一目了然,那我们来试着写写这段JSON.

try {
// 首先最外层是{},是创建一个对象
JSONObject person = new JSONObject();
// 第一个键phone的值是数组。所以须要创建数组对象
JSONArray phone = new JSONArray();
phone.put("1000000").put("2000000");
person.put("phone", phone); person.put("name", "wjj");
person.put("age", 20);
// 键address的值是对象,所以又要创建一个对象
JSONObject address = new JSONObject();
address.put("country", "china");
address.put("province", "shanghai");
person.put("address", address);
person.put("married", false);
} catch (JSONException ex) {
// 键为null或使用json不支持的数字格式(NaN, infinities)
throw new RuntimeException(ex);
}

然后 再试着拆这段JSON

try {

    JSONObject jsonObject = new JSONObject(jsonData);
person.phoneArray=jsonObject.optJSONArray("phone ");
person.name=jsonObject.optString("name");
person.age=jsonObject.optInt("age");
JSONArray jsonObject1=jsonObject.opJSONArray("address");
person.country=jsonObject1.opString("country");
person.province=jsonObject1.opString("province");
person.married=jsonObject.opBoolean("married");
} catch (JSONException e) {
e.printStackTrace();
}

就是如此。一层一层拨开,逻辑非常清晰哦。

再推荐一些方便平时读JSON的地址 :

http://www.bejson.com/

http://json.cn/

今天就到这里。谢谢大家!

To Noob Json是什么鬼?的更多相关文章

  1. 解析3级JSON的例子

    我们都知道现在Ajax盛行,而且前后台数据交流的格式已经换成了JSON了.虽然我对这种做法还是有点担忧的,如果用户关闭了JavaScript怎么办?但是这些担忧还是不能阻止Ajax的盛行和JSON数据 ...

  2. Best practices for Express app structure

    Node和Express没有一个相对严格的文件或者是文件夹结构,因此你可以按照自己的想法来构建你的web项目,特别是对一些小的项目来说,他很容易学习. 然而当你的项目变得越来越大,所面临的情况越来越复 ...

  3. 什么鬼?你还搞不懂json和字典的区别??

    现在自动化培训烂大街,是个人都能说的上几个框架,面试如果问框架相关问题,求职者只需一瓶 82 年的雪碧,会吹的让你怀疑人生!所以面试官为了更清楚的知道你是停留在表面上的花拳绣腿还是有扎实的基础,就不会 ...

  4. 一个粗心的Bug,JSON格式不规范导致AJAX错误

    一.事件回放  今天工作时碰到了一个奇怪的问题,这个问题很早很早以前也碰到过,不过没想到过这么久了竟然又栽在这里. 当时正在联调一个项目,由于后端没有提供数据接口,于是我直接本地建立了一个 json ...

  5. 【码在江湖】前端少侠的json故事(中)ng的json

    ng的json 正所谓"人在江湖,身不由己",在开发之路上前端少侠dk遇到过种种困难,尤其在与后端进行数据对接的时候,不得不逼迫自己以极快的速度去学习和掌握一些奇招怪式,正当他以为 ...

  6. eval解析JSON字符串的一个小问题

    之前写过一篇 关于 JSON 的介绍文章,里面谈到了 JSON 的解析.我们都知道,高级浏览器可以用 JSON.parse() API 将一个 JSON 字符串解析成 JSON 数据,稍微欠妥点的做法 ...

  7. [HTTP那些事] JSON数据

    随着Android的发展,各路大神的贡献,我们可用的轮子越来越多.比如HTTP请求框架,有自家的Volley,Square的okhttp, async-http-lib, 还有聚合版的xUtils以及 ...

  8. 跨域,json与jsonp格式

    好久都没有写随笔了,最近大家都忙着考试要放假了,我也要忙一忙喽.....不过再忙我还是来啦 简单的说,json是一种轻量级的数据交换格式.平时我们使用ajax等使用的一种数据形式,那么今天就说说jso ...

  9. eval及json的理解

    一,案例一 <br><br> 复制代码 var str = '{"name": "hanzichi", "age": ...

随机推荐

  1. PLSQL Developer调试 存储过程和触发器

    1. 打开PL/SQL Developer如果 在机器上安装了PL/SQL Developer的话,打开PL/SQL Developer界面输入 用户名,密码和host名字,这个跟在程序中web.co ...

  2. The only legal comparisons are between two numbers, two strings, or two dates.

    The only legal comparisons are between two numbers, two strings, or two dates. Left  hand operand is ...

  3. poj3281

    非常非常经典的构图 有二分图学习基础的话,很容易想到这是一个“三分图”的匹配问题 我们将牛,food,drink作为点 为了方便,我们将牛放在中间,每头牛的出边指向drink种类,入边由food指入 ...

  4. [C#] 我的log4net使用手册

    1. log4net简介 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.Java平台下,它还 ...

  5. 0、IOS8:Xcode6 playground

    一.Playground介绍 Playground是Xcode6中自带的Swift代码开发环境.俗话说“功欲善其事,必先利其器”.以前在Xcode5中编写脚本代码,例如编写JS,其编写过程很痛苦,Xc ...

  6. Uva 10480 Sabotage 最大流

    表示自从学了网络流,就基本上是一直用dinic 这个题一看就是用最大流,作为常识,两个点之间的最大流等于最小割 但是这个题需要输出割边,然后我就不会了,dinic判流量我觉得也可做,但是一直wa 然后 ...

  7. <转>SpringMVC与Struts2 比较总结

    原链接:http://blog.csdn.net/chenleixing/article/details/44570681 个人整理: 1.级别不同:SpringMVC :方法  Struts是 类级 ...

  8. STM32之CAN ---CAN ID过滤器分析

      1 前言 在CAN协议里,报文的标识符不代表节点的地址,而是跟报文的内容相关的.因此,发送者以广播的形式把报文发送给所有的接收者.节点在接收报文时,根据标识符(CAN ID)的值决定软件是否需要该 ...

  9. prefuse学习(一)用非数据库连接和xml的方式读入数据

    prefuse正常的数据源需要从ConnectionFactory中生产出来,但是如果平时不想用里面给的方法得到数据,就需要手动创造Graph里面所需要的内容两个Table 下面是我自己写的从文件中读 ...

  10. Windows命令行使用FTP

    1.系统环境 FTP客户端:Windows7旗舰版,管理员权限命令行: FTP服务端:CentOS 6.5,VSFTP,端口 21(默认) 2.登陆FTP 在命令行下输入 ftp,出现 ftp> ...