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 2021-03-26 00:01  一计  阅读(61)  评论(0)    收藏  举报