[Java IO]05_JSON操作
目录
6.1 JSON 知识背景
6.1.1 JSON 简介
JSON: JavaScript Object Notation(JavaScript 对象表示法)
JSON 是存储和交换文本信息的语法。类似 XML。
JSON 比 XML 更小、更快,更易解析。
JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。
6.1.2 JSON 语法
JSON 语法规则
- 数据在名称/值对中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
JSON 名称/值对
JSON 数据的书写格式是:名称/值对。
名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:
|
“name” : “zhangsan” |
这很容易理解,等价于这条 JavaScript 语句:
|
Name = “zhangsan” |
JSON 值类型
JSON 值可以是:
- 字符串(在双引号中)
- 数字(整数或浮点数)
- 对象(在花括号中)
- 数组(在方括号中)
- 逻辑值(true 或 false)
- Null
值的数据类型图:

6.1.3 JSON 的数据结构
JSON有两种数据结构:对象和数组。
JSON 对象
对象是一个无序的“‘名称/值’对”集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。
JSON 对象在花括号中书写:
|
{ "name":"zhangsan" , "age":24 } |
这一点也容易理解,与这条 JavaScript 语句等价:
|
name = "zhangsan" age = 24 |
参考图如下:

JSON 数组
值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
JSON 数组在方括号中书写:
数组可包含多个对象:
|
{ "people": [ { "namr":"zhangsan" , "age":22 }, { "name":"lisi" , "age":24 }, { "name":"wangwu" , "age":27 } ] } |
在上面的例子中,对象 "employees" 是包含三个对象的数组。每个对象代表一条关于某人(有姓和名)的记录。
参考图如下:

6.2 Java 中操作 JSON 数据
网上有很多JAVA种操作JSON的jar包,这里介绍一个最常见的jar包:json-lib。
6.2.1 Jar包下载
下载地址:http://json-lib.sourceforge.net/
6.2.2 基本方法
普通数据转 JSONObject
/**
* 普通数据转 JSON
*/
public static void JsonTest1() {
JSONObject normalJson = new JSONObject();
normalJson.put("name", "zhangsan");
normalJson.put("sex", "男");
normalJson.put("age", new Integer(22));
System.out.println(normalJson.toString());
}
Map数据转 JSON
/**
* Map数据转 JSON
*/
public static void JsonTest2() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", "zhangsan"); // string 类型
map.put("age", new Integer(22)); // number 类型
Object obj = new String("params");
map.put("obj", obj); // Object 类型
map.put("array", new String[] { "a", "b", "c" }); // array 类型
map.put("b_true", Boolean.TRUE); // boolean 类型
map.put("b_false", Boolean.FALSE); // boolean 类型
JSONObject json = JSONObject.fromObject(map);
System.out.println(json.toString());
}
List 数据转 JSON
/**
* List数据转 JSON
*/
public static void JsonTest3() {
List<String> list = new ArrayList<String>();
list.add("first");
list.add("second");
JSONArray jsonArray = JSONArray.fromObject(list);
System.out.print(jsonArray);
}
数组数据转 JSON
/**
* 数组数据转 JSON
*/
public static void JsonTest4() {
String[] colors = new String[]{ "red", "yellow", "blue" };
JSONArray jsonArray = JSONArray.fromObject(colors);
System.out.println(jsonArray);
}
构建 JSON 文本
JSONStringer可以用来快速构建一个JSON格式的文本,并转换成String,可以写入文件;
JSONStringer是JSONWriter的子类;
JSONStringer一般通过object().key().value().key().value().endObject()进行构造;
object() 表明开始一个对象,即添加'{';
endObject() 表明结束一个对象,即添加'}';
array() 表明开始一个数组,即添加一个'[';
endArray() 表明结束一个数组,即添加一个']';
key() 表示添加一个key;
value() 表示添加一个value;
/**
* 构建 JSON 文本
*/
public static void JsonTest5() {
JSONStringer stringer = new JSONStringer();
String str = stringer.object().key("product").value("phone").key("num").value(20).endObject().toString();
System.out.println(str);
}
参考资料
http://www.json.org/
http://www.runoob.com/json/json-tutorial.html
[Java IO]05_JSON操作的更多相关文章
- Java IO流操作汇总: inputStream 和 outputStream【转】
我们在进行Android java 开发的时候,经常会遇到各种IO流操作.IO流操作一般分为两类:字符流和字节流.以“Reader”结尾都是字符流,操作的都是字符型的数据:以“Stream”结尾的都是 ...
- Java IO流操作 (I)
1.FileWriter 写数据---输出流---由控制台向文件中写数据 import java.io.FileWriter; import java.io.IOException; /* * 写数据 ...
- java IO基础操作
java IO基础,通熟易懂,好久没复习java 基础了.这里是传送门... http://www.cnblogs.com/nerxious/archive/2012/12/15/2818848.ht ...
- java io 文件操作
package com.svse; import java.io.File; import java.io.IOException; public class IOTest { public stat ...
- Java IO流操作(III)——File类&案例一:输出制定目录下所有java文件名(包含子目录)&案例二:删除指定的目录(包含子目录)
1. File常用的构造 File file = new File("字符串路径"); File f = new File("D:\\a\\b.txt"); F ...
- java IO文件操作简单基础入门例子,IO流其实没那么难
IO是JAVASE中非常重要的一块,是面向对象的完美体现,深入学习IO,你将可以领略到很多面向对象的思想.今天整理了一份适合初学者学习的简单例子,让大家可以更深刻的理解IO流的具体操作. 1.文件拷贝 ...
- [Java IO]06_JSON操作
6.1 JSON 知识背景 6.1.1 JSON 简介 JSON: JavaScript Object Notation(JavaScript 对象表示法) JSON 是存储和交换文本信息的语法.类似 ...
- java+++IO流操作
序:IO流的操作主要分为两种读和写.一方面:我们可以通过不加缓冲类字符流BufferedReader/Writer和字节流BufferedInputStream/OutputStream来进行简单的读 ...
- Java IO流操作 (II)
缓冲流 /* * BufferedWriter:将文本写入字符输出流,缓冲各个字符,从而提供单个字符.数组和字符串的高效写入. * BufferedReader:从字符输入流中读取文本,缓冲各个字符, ...
随机推荐
- TCP/IP详解阅读记录----第二章 数据链路层
1.以太网 以太网是当今TCP/IP采用的主要的局域网技术.它采用一种称作CSMA/CD的媒体接入方法,其意思是带冲突检测的载波侦听多路接入.它的速率为10Mb/s,地址为48bit. 2.I ...
- adworld easy_RSA | RSA算法
题目描述: 解答出来了上一个题目的你现在可是春风得意,你们走向了下一个题目所处的地方 你一看这个题目傻眼了,这明明是一个数学题啊!!!可是你的数学并不好.扭头看向小鱼,小鱼哈哈一笑 ,让你在学校里面不 ...
- 2020年Java 成长路线-flag
一.基础篇 JVM JVM内存结构 堆.栈.方法区.直接内存.堆和栈区别 Java内存模型 内存可见性.重排序.顺序一致性.volatile.锁.final 垃圾回收 内存分配策略.垃圾收集器(G1) ...
- JS宣传页项目-综合实战
按照国际惯例先放图 index.html <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
- CSS:overflow 内容溢出属性
overflow 属性规定当内容溢出元素框时发生的事情 值 描述 visible 默认值.内容不会被修剪,会呈现在元素框之外. hidden 内容会被修剪,并且其余内容是不可见的. scroll 内容 ...
- CF1254E Send Tree to Charlie
题意 讲不太清楚,看英文吧 cf 做法 在正式开始之前,我们先来玩一玩性质 首先考虑全\(0\)的情况,即本质不同的方案数 性质1:方案数并不为(n-1)!,即方案与结果不为双射 考虑一条边将树分为两 ...
- P1462 通往奥格瑞玛的道路【二分+Dij】
P1462 通往奥格瑞玛的道路 提交 29.89k 通过 6.88k 时间限制 1.00s 内存限制 125.00MB 题目提供者gconeice 难度提高+/省选- 历史分数100 提交记录 查看题 ...
- js - 除法
取整数 1.丢弃小数部分,保留整数部分 js:parseInt(7/2) 2.向上取整,有小数就整数部分加1 js: Math.ceil(7/2) 3,四舍五入. js: Math.round(7/2 ...
- Win10下安装tensorflow详细过程
首先声明几点: 安装tensorflow是基于Python的,并且需要从Anaconda仓库中下载. 所以我们的步骤是:先下载Anaconda,再在Anaconda中安装一个Python,(你的电脑里 ...
- pandas玩转excel-> (2)如何利用pandas读取excel数据文件
import pandas as pd #将excel文件读到内存中,形成dataframe,并命名为peoplepeople=pd.read_excel('D:/python结果/task2/Peo ...