JSON简要说明
本文说明:本文不去探究一些深层次的东西只是简明扼要的介绍json。json并不简单难的我不会所以本文不写。本文写的只是简单的皮毛毛,所以适合初识json的小伙伴们。
本文介绍json的最基本的知识点,可以让那些还没有接触json的小伙伴们一看到本文就能快速的消除对json的陌生感。如果你阅读本文后能产生这种感觉,将是作者莫大的荣幸,也请顶一下,赞一下。
json是一种轻量级的数据交换模式,目前是较为理想的数据交换语言,具体的定义请自行百度个人认为稍微看一眼就行,要先会用,然后再深入,读者可以当做是一种行之有效但错误的快速学习的方法。
先抛出一个json来看看,看看它到底长什么样子。
例子1:
{
"blogName": "念念不忘,必有回响的博客",
"url": "http://blog.youkuaiyun.com/qq_14840899",
"authorName": "WangGeBing"
"age": "24"
"company": "互爱科技"
}
这就是一个简单的json。它易于机器以及人来阅读。
下边具体的来说一下json
1.什么是json?
JSON的定义不在这里复述以及json的由来,json的发展都不在复述,作者想表明最直观的的东西给读者看那么我们可以说:“ 例子1就是最直观简单json”。
json的的格式以及结构说明:
从作者目前的认知出发,json是“名称/值对”的组合。结构上可以分为两大类。
(1)json表示对象
如:例子1
(2)json表示数组
如:例子2
例子2
{
"readers": [{
"address": "中国天津",
"university": "河南大学",
"sex": "男",
"tell": "183178934X2",
"name": "师X杰",
"age": "24"
}, {
"address": "中国郑州",
"university": "河南大学",
"sex": "男",
"tell": "183178934X0",
"name": "陈X南",
"age": "24"
}, {
"address": "中国东莞",
"university": "河南大学",
"sex": "男",
"tell": "183178934X4",
"name": "于X庆",
"age": "24"
}, {
"address": "中国北京",
"university": "河南大学",
"sex": "男",
"tell": "183178934X9",
"name": "胡X铮",
"age": "24"
}
]
}
2.json在java代码中的小小体现
这一小节前提说明:在这里不深入探究复杂的定义和超级深层次的应用,因为作者也在学习过程中。只是简单的说明并给到一个针对本篇博客的源码例子。让读者看完操作完立马就能上手json。
首先我们来看这样的一句话:“JSON 语法是 JavaScript 对象表示语法的子集。”其实这是对json语法的定义作者对这句话以及“ 在json可以用来做什么?”上这一点可以理解概括为“json可以将JavaScript对象表示的一组数据转换为字符串”。
说道这里我们来看一下json的的格式:
json数据的书写格式是:名称/值对。
json的数据格式相对来说是固定的
由例子1中可以看出
"blogName": "念念不忘,必有回响的博客"
“:” 前为名称后为值。
格式严格按照 "":""
json也可以表示数组例子1为json表示对象,例子2位json表示数组。
3.源码
打开eclipse,在package explorer下新建一个java project
然后相应的建package建类(不再过多陈述,这些读者肯定会如果读者不是java从事者那么下边的内容不适合你)
这里要添加一个jar包
org.json.jar缺少该jar包程序无法运行
注:读者可以自己去下载,也可以下载本文的小例子,本文的小例子完全没有下载的必要但是读者如果想打赏作者辛苦码字,反复修改格式调弄版面可以点击下边的链接下载本文源码,源码中的思路适合初学者练习,包括格式,变量的命名等都值的一看。
下边是本文对应的源码:
package com.wanggebing.test;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class TestJSON {
/**
* 博客中的例子1
*
* @return 例子1json
* @throws JSONException
*/
public static String jsonObj() throws JSONException {
JSONObject json = new JSONObject();
json.put("blogName", "念念不忘,必有回响");
json.put("url", "http://blog.youkuaiyun.com/qq_14840899");
json.put("name", "WangGeBing");
json.put("age", "24");
json.put("company", "互爱科技");
return json.toString();
}
/**
* 博客中例子2
*
* @return 例子2json字符串
* @throws JSONException
*/
public static String jsonArray() throws JSONException {
JSONObject json = new JSONObject();
JSONArray jsonMembers = new JSONArray();
JSONObject member1 = new JSONObject();
member1.put("name", "师X杰");
member1.put("age", "24");
member1.put("sex", "男");
member1.put("tell", "183178934X2");
member1.put("address", "中国天津");
member1.put("university", "河南大学");
jsonMembers.put(member1);
JSONObject member2 = new JSONObject();
member2.put("name", "陈X南");
member2.put("age", "24");
member2.put("sex", "男");
member2.put("tell", "183178934X0");
member2.put("address", "中国郑州");
member2.put("university", "河南大学");
jsonMembers.put(member2);
JSONObject member3 = new JSONObject();
member3.put("name", "于X庆");
member3.put("age", "24");
member3.put("sex", "男");
member3.put("tell", "183178934X4");
member3.put("address", "中国东莞");
member3.put("university", "河南大学");
jsonMembers.put(member3);
JSONObject member4 = new JSONObject();
member4.put("name", "胡X铮");
member4.put("age", "24");
member4.put("sex", "男");
member4.put("tell", "183178934X9");
member4.put("address", "中国北京");
member4.put("university", "河南大学");
jsonMembers.put(member4);
json.put("readers", jsonMembers);
return json.toString();
}
/**
* json字符串写入本地json文件,(没有做文件是否存在的判断)
*
* @param jsonStr
* @param fileName
*/
public static void writeJSON(String jsonStr, String filePath) {
try {
FileOutputStream fos = new FileOutputStream(filePath, true);
fos.write(jsonStr.getBytes());
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 本地读取json文件
*
* @param path
* @return json字符串
*/
public static String getJSON(String path) {
File file = new File(path);
Scanner scanner = null;
StringBuilder buffer = new StringBuilder();
try {
scanner = new Scanner(file, "utf-8");
while (scanner.hasNextLine()) {
buffer.append(scanner.nextLine());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (scanner != null) {
scanner.close();
}
}
return buffer.toString();
}
/**
* 将例子1,例子2分别写入本地文件,然后再从本地文件读取
*
* @return str
* @throws JSONException
*/
public static String jsonTest() throws JSONException {
String jsonObjfilePath = "D:/jsonObj.json";
writeJSON(jsonObj(), jsonObjfilePath);
String jsonObjString = getJSON(jsonObjfilePath);
JSONObject jsonObj = new JSONObject(jsonObjString);
String blogName = jsonObj.getString("blogName");
String name = jsonObj.getString("name");
String company = jsonObj.getString("company");
String age = jsonObj.getString("age");
String url = jsonObj.getString("url");
System.out.println("jsonObj.json文件读取到的值分别是:");
System.out.println("blogName:" + blogName);
System.out.println("name:" + name);
System.out.println("company:" + company);
System.out.println("age:" + age);
System.out.println("博客访问地址:" + url);
String jsonArrayfilePath = "D:/jsonArray.json";
writeJSON(jsonArray(), jsonArrayfilePath);
String jsonArrayString = getJSON(jsonArrayfilePath);
JSONObject jsonArrayObj = new JSONObject(jsonArrayString);
JSONArray jsonArray = jsonArrayObj.getJSONArray("readers");
String names = "All Name:";
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject user = (JSONObject) jsonArray.get(i);
String userName = (String) user.get("name");
if (i == jsonArray.length() - 1) {
names += userName;
} else {
names += userName + ",";
}
}
String addresss = "All address:";
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject user = (JSONObject) jsonArray.get(i);
String address = (String) user.get("address");
if (i == jsonArray.length() - 1) {
addresss += address;
} else {
addresss += address + ",";
}
}
String tells = "All tell:";
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject user = (JSONObject) jsonArray.get(i);
String tell = (String) user.get("tell");
if (i == jsonArray.length() - 1) {
tells += tell;
} else {
tells += tell + ",";
}
}
System.out.println("方法jsonTest()返回值:");
return names + "祝大伙2017新年快乐。" + addresss + "阖家幸福。" + tells + "身体健康万事如意。";
}
public static void main(String[] args) {
try {
System.out.println("例子1中的json展示:" + jsonObj());
System.out.println("例子2中的json展示:" + jsonArray());
System.out.println(jsonTest());
} catch (JSONException e) {
e.printStackTrace();
}
}
}
本文源码下载url:JSON简要说明源码3.json格式化最常用的工具?或者浏览器的插件
在chrome、Firefox里扩展程序里都有jsonview的插件如果你的访问结果直接是json那么浏览器会自动为你格式化。 postman展示图如下:
在这里作者给读者提供一个免费的超级好用的json格式化工具。请看下图:
如图所示这是非常好用的notepad++ 纯文本编辑器,作者强烈推荐,首先它是完全免费的而且有中文语言和英语供使用者自主选择,而且32位版本中直接内嵌的有plugin manager。里边有各种美好的插件,上图使用的就是jstool。具体安装步骤请看下图
接下来找到jstool然后点击下载,然后重启notepad++使改变生效,下图展示jsformat和
祝读者工作顺利,文中若有错误请多多指正,共同学习。
4.说明
本文只是小小的介绍了一下json作者水平有限,多多包涵。关于json作者也还有许多要学习的地方。本文如果有错请高手老鸟多多指正。