对于JAVA数据解析,现阶段学习到了两种方法,分别是
**XML:**可扩展标记语言(eXtensible Markup Language),诞生于1998年2月,XML最初的设计目的是为了EDI(Electronic Data Interchange,电子数据交换),确切地说是为EDI提供一个标准数据格式。
**JSON:**JavaScript Object Notation JS对象简谱,是一种轻量级的数据交换格式,易于人阅读和编写。在2001年开始推广使用的数据格式,在2005年-2006年正式成为到目前的主流数据格式。
XML是网络数据传输、数据存储早期的版本,数据结构较多是,相对阅读起来会比较容易,但操作起来会比较复杂,使用效率低;
JSON是迭代升级后的版本,相对于XML效率更高,操作更比较简单,具有良好的可读和便于快速编写的特性, 是目前主流使用的数据交换格式。
将Java中的对象 快速的转换为 JSON格式的字符串;
将JSON格式的字符串, 转换为Java的对象
我们要学习使用JSON解析,必须对JSON解析的规则原理有深刻的认识和了解,然后才知道它的一个实现原理
JSON里面的数据是以一种键值对的方式存在 (”key”:”value”)中值的类型可以是下面数据类型中的任意一种:
- 数字(整数或浮点数)
- 逻辑值(true 或 false)
- 字符串(在双引号中)
- 数组(在方括号中)
- 函数
- 对象(在大括号中)
- nul
JSON的语法规则非常的简单,就是使用大括号’{}’、中括号’[]’、逗号’,’、冒号’:’,、双引号’“”’。 数据类型:嵌套对象、数组、字符串、数字、布尔值或空值。 我们在JSON解析中只有三中情况出现
1.{} 解析’大括号’类型
2. [ ] 解析是’中括号’类型
3. 其实只有两种,那第三种则是1与2的组合方法即”{’name’:’李书豪’ ,’hobby’:[‘编程’,’电竞’,’睡觉’]}”那么下面分别来看一些这三种类型以及解析
数据解析,目前常用的有谷歌的Gson和阿里的fastJson,两者比较,更有优势:
谷歌的Gson直接调用对象方法进行JSON格式转换和解析,在国际上使用的比较多,性能也更加稳定。
package com.kkb.gson;le.gson.Gson;import java.util.HashMap;
import java.util.Iterator;
import java.util.List;/*** @Author: LiHuan* @Description:* @Date Created in: 2021-05-27-22:30* @Modified By:*/
public class Deom_ListGson {public static void main(String[] args) {
// 1、创建Gson对象Gson gson = new Gson();
// 2、传递参数HashMap date = gson.fromJson("{"id":"100","name":"金苹果","info":"种植苹果真辛苦"," +""page":["锄禾日当午","汗滴禾下午","谁知盘中餐","粒粒皆辛苦"]}", HashMap.class);
// 3、获取参数对象的类型System.out.println((("page")).getClass());List<String> page = (List<String>) ("page");
// 4、使用迭代器打印结果Iterator iterator = page.iterator();while (iterator.hasNext()) {System.out.());}}
}
阿里的fastJson直接调用JSON静态方法进行格式转换和解析,在国内使用比较多,使用也更加简单便捷。如果看到是{ },使用JSONObject,如果看到的[ ],则使用JSONArray解析
package com.kkb.fastJSON;import com.alibaba.fastjson.JSON;
import com.kkb.info.Book;import java.util.Iterator;
import java.util.List;/*** @Author: LiHuan* @Description:* @Date Created in: 2021-05-27-23:15* @Modified By:*/
public class Demo2_parseObject {public static void main(String[] args) {
// 1、创建fastJSON类型的对象,给参数赋值Book book = JSON.parseObject("{"id":"1002","info":["春眠不觉晓","处处闻啼鸟","夜来风雨声","花落知多少"],"name":"春晓"}", Book.class);
// 2、直接输出参数的值System.out.Id());System.out.Name());
// 3、将对象中的info对象转换成集合List<String> strings = JSON.Info(), String.class);
// 4、使用迭代器输出集合中的结果Iterator iterator = strings.iterator();while (iterator.hasNext()) {System.out.());}}
}
额外补充其他信息,分别为数据的实体类,JSON转换类
package com.kkb.info;import java.util.Objects;/*** @Author: LiHuan* @Description:* @Date Created in: 2021-05-27-22:12* @Modified By:*/
public class Book {private String id;private String name;private String info;@Overridepublic String toString() {return "Book{" +"id='" + id + ''' +", name='" + name + ''' +", info='" + info + ''' +'}';}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Book book = (Book) o;return Objects.equals(id, book.id) &&Objects.equals(name, book.name) &&Objects.equals(info, book.info);}@Overridepublic int hashCode() {return Objects.hash(id, name, info);}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getInfo() {return info;}public void setInfo(String info) {this.info = info;}public Book(String id, String name, String info) {this.id = id;this.name = name;this.info = info;}public Book() {}
}
package com.kkb.gson;le.gson.Gson;
import com.kkb.info.Book;/*** @Author: LiHuan* @Description:* @Date Created in: 2021-05-27-22:14* @Modified By:*/
public class Demo1_toGson {public static void main(String[] args) {
// 1、创建Gson对象;Gson gson = new Gson();
// 2.传递参数Book book = new Book("100", "金苹果", "种植苹果真辛苦");
// 3、转换成JSON格式数据,调用对象方法String s = Json(book);
// 4、打印输出System.out.println(s);}
}
package com.kkb.fastJSON;import com.alibaba.fastjson.JSON;
import com.kkb.info.Book;/*** @Author: LiHuan* @Description:* @Date Created in: 2021-05-27-22:50* @Modified By:*/
public class Demo1_ToJSON {public static void main(String[] args) {
// 1、创建对象并传递参数Book book = new Book("1002", "春晓", "春眠不觉晓,处处闻啼鸟,夜来风雨声,花落知多少");
// 2、将对象转换成JSON格式的对象,调用对象的静态方法String json = JSONString(book);
// 3、输出结果System.out.println(json);}
}
- 谷歌的Gson和阿里的fastJson目前需要手动导包才可以使用;
- 作为JAVA后端开发,JSON是目前所学习的最最重要的内容,以后开发每天都会用到,所以必须要熟练掌握;
- 两种方法都好都各有优势,需要根据团队需求进行选择。
本文发布于:2024-02-04 12:48:34,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170707617455717.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |