JSON
- JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
- JSON 是轻量级的文本数据交换格式
- JSON 独立于语言 *
- JSON 具有自我描述性,更易理解
- 比XML更小、更快、更易解析
其他形式对象格式
一本书 书名 价格 java class Book{ private String name; private String price; get/set... } Book b = new Book(); b.setName(“啊啊啊啊啊啊”); b.setInfo(100); js: var b = new Object(); b.name = "啊啊啊啊啊啊"; b.price= 100; XML: <book> <name>啊啊啊啊啊啊</name> <price>100</price> </book>
JSON对象格式
{ "name":"啊啊啊啊啊", "price":100 } 一个对象, 由一个大括号表示。 括号中 描述对象的属性。通过键值对来描述对象的属性 (可以理解为, 大括号中, 包含的是一个个的键值对) 格式: 键与值之间使用冒号连接, 多个键值对之间使用逗号分隔. 键值对的键 应使用引号引住 (通常Java解析时, 键不使用引号会报错. 而JS能正确解析) 键值对的值, 可以是JS中的任意类型的数据
在JSON格式中数组、对象可以互相嵌套
{
"name":"秋水",
"age":18,
"friends":["一","二","三","四",{ "name":"明澄", "info":"coding" }],
"love":{ "name":"洛阳", "location":"heart" }
}
Java和JSON
Java对象转换为JSON字符串
JSON字符串转换为Java对象
方式:
传统的解析方式:JSONObject
// 生成Json字符串 JSONObject jsonObject = new JSONObject(); jsonObject.put(key, value); System.out.println(jsonObject.toString()); // 解析Json字符串 // 解析单个对象 Book book = new Book(); JSONObject jsonObject = new JSONObject(jsonString); JSONObject bookObject = jsonObject.getJSONObject("book"); book.setName(bookObject.getString("name")); book.setPrice(bookObject.getString("price")); // 解析数组对象 List list = new ArrayList(); JSONObject jsonObject = new JSONObject(jsonString); // 获取json数组 JSONArray jsonArray = jsonObject.getJSONArray(key); for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObject2 = jsonArray.getJSONObject(i); ··· list.add(book); }
Gson:(又称Google Gson)是Google公司发布的一个开放源代码的Java库,主要用途为序列化Java对象为JSON字符串,或反序列化JSON字符串成Java对象。
github地址:https://github.com/google/gson
简单示例:
// 需引入JAR包:gson-版本号.jar // 对象转字符串 Book b = new Book(); b.setName("啊啊啊"); b.setPrice(100); String json = new Gson().toJson(b); System.out.println(json); // 字符串转对象 String json = "{\"name\":\"啊啊啊\",\"price\":100.0}"; // 单个对象 Book book = new Gson().fromJson(json, Book.class); // list数组 // list = new Gson().fromJson(json, new TypeToken<>() { // }.getType()); System.out.println(book);
FastJson:是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。
github地址:https://github.com/alibaba/fastjson
简单示例:
// 需引入jar包:fastjson-版本号.jar // 对象转字符串 Book b = new Book(); b.setName("啊啊啊"); b.setPrice(100); String json = JSON.toJSONString(b); System.out.println(json); // 字符串转对象 String json = "{\"name\":\"啊啊啊\",\"price\":100.0}"; // 转换为单个对象 Book book = JSON.parseObject(json, Book.class); // 转换为集合对象 // JSON字符串:"[\"111\",\222\",\"333\"]" // List<类型> list=JSON.parseArray(JSON字符串,类型.class); System.out.println(book);
posted on
浙公网安备 33010602011771号