To Noob Json是什么鬼?

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

供应商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/

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-10 14:44:23

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

python2.7.x的字符串编码到底什么鬼?(中文和英文的处理)

一直以来我其实一直对python的编码弄得非常晕,能正常编码,也能处理一些情况.但是始终不明白有些问题究竟为何出,原因是什么,为什么要这样用. 今天晚上正好好好研究了一番解答了自己心中的困惑. Q:python2.7.x里面的中文表示到底是什么鬼? A:直接来看看 In [23]: x = '好不好喝都要喝' In [24]: x Out[24]: '\xe5\xa5\xbd\xe4\xb8\x8d\xe5\xa5\xbd\xe5\x96\x9d\xe9\x83\xbd\xe8\xa6\x81\

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

一.事件回放  今天工作时碰到了一个奇怪的问题,这个问题很早很早以前也碰到过,不过没想到过这么久了竟然又栽在这里. 当时正在联调一个项目,由于后端没有提供数据接口,于是我直接本地建立了一个 json 文件,然后把配置的URL指向这个json文件,文件内容大概如下 : // account.json { success: true, data: [{ id: "1", name: "张XX", job: "员工", type: 1 }] } 嗯,一

python json及mysql——读取json文件存sql、数据库日期类型转换、终端操纵mysql及python codecs读取大文件问题

preface: 近期帮师兄处理json文件,须要读到数据库里面,以备其兴许从数据库读取数据.数据是关于yelp站点里面的: https://github.com/Yelp/dataset-examples,http://www.yelp.com/dataset_challenge/. 涉及到一些json和sql的问题,记录下. 一.python sql安装 python 自带轻型数据库sqlite,只是用不了.须要mysql才行.pip安装mysql失败.easy_install安装也失败.这

python读取json文件存sql及codecs读取大文件问题

preface: 最近帮师兄处理json文件,需要读到数据库里面,以备其后续从数据库读取数据.数据是关于yelp网站里面的: https://github.com/Yelp/dataset-examples,http://www.yelp.com/dataset_challenge/. 涉及到一些json和sql的问题,记录下. 一.python sql安装 python 自带轻型数据库sqlite,不过用不了.需要mysql才行,pip安装mysql失败,easy_install安装也失败,这

【php】配合Ajax与Json,根据MVC思想,无插件,完美兼容IE6,编写一个获取动态系统

获取用户动态在一些论坛等社交网络中很常见,甚至可以说,就是一个微博嘛.其实这个系统很简单的,很容易就能写出来. 当然,你平时要做好准备,在你的后台数据库加一张动态表,在用户发帖.回帖等各个动作的执行时候,再加一条把用户的各个动作入库,记录到一张专门的动态表内.时刻收集好用户的动态,这样才能向用户的好友或者整个网站的用户展示好友动态. 现在举一个例子来说明,怎么编写一个获取动态系统,也就是微博. 一.基本目标 假设我们现在收集了16条用户动态在Testtable表里面,时间什么的具体数据居然有条1

如果json中的key需要首字母大写怎么解决?

一般我们命名都是驼峰式的,可是有时候和第三方接口打交道,也会遇到一些奇葩,比如首字母大写........额 这是个什么鬼,对方这么要求,那我们也得这么写呀. 于是乎,第一种方式:把类中的字段首字母大写,简单粗暴,然后生成setter getter.然后测试......给跪了 发现还是小写,额滴个亲娘呀,恁是咋回事儿呀. 原来 jackson在把类转成json的时候,看的是setter getter方法.也就是javabean. 搜噶. 于是乎,我们是否可以指定json的字段名呢,比如类中叫wha

Spring data jpa JavassistLazyInitializer 不仅是Json序列化问题.以及解决办法

最近偷点时间更新一下框架,使用SpringBoot2.0 整套一起更新一下,发现些小问题 Spring data jpa getOne 返回的是代理对象,延迟加载的,ResponseBody成Json的时候会有序列化问题,网上的都说加上这个就好了,这样是能返回. @JsonIgnoreProperties(value={"hibernateLazyInitializer","handler","fieldHandler"}) 但是经过自定义的,但

RobotFramework:发现一个大坑,当post接口入参为json时,千万不能用sojson转化后的json串,直接用浏览器粘过来的就行

问题背景: 和以往一样愉快的进行着自动化测试,突然就不停的提示我,“程序异常”,查看log发现data中的json变为了数组?????? 那算了,我不先组装入参数据直接data=json入参吧,what`s up, Fu.......................,查看半天post requests关键字的入参,发现没有问题啊. 重新打开ride吧! 这什么工具啊,这么坑我. 解决: 回想之前接口测试用例写的多了,这什么鬼啊,会不会是我json串粘贴的有问题,算了直接把F12抓包过来的入参直接

Day4 - 迭代器&生成器、装饰器、Json & pickle 数据序列化、软件目录结构规范

---恢复内容开始--- 本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 需求:列表a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求把列表里的每个值加1 1 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 2 b = [] 3 for i in a: 4 b.append(i+1) 5 a = b 6 print(a) 普通青