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

供应商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. BZOJ2882: 工艺

    题解: 裸的字符串最小表示... 可以戳这里:http://www.cnblogs.com/ACAC/archive/2010/05/23/1742349.html 这里说一下为什么a[i+k]> ...

  2. PopupWindow-弹窗的界面

      1 效果图 2 知识点 PopupWindow(View contentView, int width, int height) //创建一个没有获取焦点.长为width.宽为height,内容为 ...

  3. ora-28001:口令失效

    Oracle11G创建用户时缺省密码过期限制是180天(即6个月), 如果超过180天用户密码未做修改则该用户无法登录. Oracle公司是为了数据库的安全性默认在11G中引入了这个默认功能,但是这个 ...

  4. android Bitmap getByteCount和getRowBytes

    今天做图像缓存需要计算Bitmap的所占的内存空间,于是研究了下Bitmap关于内存占用的API 1.getRowBytes:Since API Level 1,用于计算位图每一行所占用的内存字节数. ...

  5. [转]ASP.NET MVC Jquery Validate 表单验证的多种方式介绍

    在我们日常开发过程中,前端的表单验证很重要,如果这块处理不当,会出现很多bug .但是如果处理的好,不仅bug会很少,用户体验也会得到很大的提升.在开发过程中我们可以不借助 JS 库,自己去手写 JS ...

  6. 基于WebForm+EasyUI的业务管理系统形成之旅 -- 施工计划查询(Ⅷ)

    上篇<基于WebForm+EasyUI的业务管理系统形成之旅 -- 施工计划安排>,主要介绍整个施工计划列表与编辑界面. 下面看看施工计划查询(ⅠⅡⅢ ⅣⅤⅥ Ⅶ Ⅷ) 一.施工计划查询 ...

  7. [Andrew]Ext.net前台弹框

    //有询问的提示框 Ext.Msg.show({            title: title,            msg: msg,            buttons: Ext.Msg.Y ...

  8. Jenkin+TestNG进行自动化测试执行

    1.登陆jenkins'后,主页面有一个jenkins管理选项,进入该模块,对插件,系统进行配置.(安装一个extend choice parameter插件) 2.点击new item新建一个项目, ...

  9. 树莓pi快速ssh【校园网】

    校园网是NAT后的,没有显示器,我把路由器的DHCP服务关了,这样的情况下怎么ssh到树莓pi? 把树莓pi 连到路由器上(已经关闭DHCP),手机安装FING https://play.google ...

  10. cloudera manager 及CDH卸载

    记录用户数据路径 删除用户数据 中列出的用户数据路径 /var/lib/flume-ng /var/lib/hadoop* /var/lib/hue /var/lib/navigator /var/l ...