Java解析JSON数据

1、什么是JSON?

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。

它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。

简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。

易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

2、JSON的语法格式

JSON 语法衍生于 JavaScript 对象标记法语法:

  • 数据在键值对中。比如:{“name”:“Bill Gates”} 在 JSON 中,值必须是以下数据类型之一:

    • 字符串(在 JSON 中,字符串值必须由双引号编写)
    • 数字
    • 对象
    • 数组
    • 布尔
    • null
  • 数据由逗号分隔
  • 花括号容纳对象
  • 方括号容纳数组
  • 注释符号为 #

一个天气查询API网站返回的JSON实例,网址:

http://www.tianqiapi.com/index/doc?version=v61

{"cityid":"101271201", #城市编号"date":"2020-07-15","week":"星期三","update_time":"10:15", #更新时间"city":"内江", #城市名称"cityEn":"neijiang","country":"中国","countryEn":"China","wea":"阴", #实时天气情况"wea_img":"yin","tem":"25", #实时温度"tem1":"29", #高温"tem2":"23", #低温"win":"西风", #风向"win_speed":"2级", #风力等级"win_meter":"小于12km/h", #风速"humidity":"97%", #湿度"visibility":"24.22km", #能见度"pressure":"961", #气压"air":"15", #空气质量"air_pm25":"8", #pm2.5"air_level":"优","air_tips":"空气很好,可以外出活动,呼吸新鲜空气,拥抱大自然!","alarm":{"alarm_type":"暴雨",  #预警类型"alarm_level":"橙色", #预警等级"alarm_content":"内江市气象台7月15日5时23分发布第16号暴雨橙色预警信号:预计我市市中区部分地方3小时降雨量将达50毫米以上,并伴有雷电和阵性大风,请加强防范强降水、雷电和大风等带来的危害。(预警信息来源:国家预警信息发布中心)" #预警描述},"aqi":{ #空气质量指数详情"air":"15","air_level":"优","air_tips":"空气很好,可以外出活动,呼吸新鲜空气,拥抱大自然!","pm25":"8","pm25_desc":"优","pm10":"10","pm10_desc":"优","o3":"47","o3_desc":"优","no2":"12","no2_desc":"优","so2":"8","so2_desc":"优","co": "1","co_desc": "优","kouzhao":"无需戴口罩","waichu":"适宜外出","yundong":"适宜运动","kaichuang":"适宜开窗","jinghuaqi":"关闭净化器","cityid":"101271201","city":"内江","cityEn":"neijiang","country":"中国","countryEn":"China"}}

3、JSON的用途

对于客户端而言,可以通过JSON,将大量数据一次性传送到服务器,对于服务器 而言,可以在单个请求中处理大量的数据。

目前Java较为流行的JSON解析库有谷歌的GSON,阿里的FastJson等。

Gson Jar包下载地址:https://search.maven.org/artifact/com.google.code.gson/gson/2.8.7/jar

FastJson Jar包下载地址:
https://github.com/alibaba/fastjson

4、Java中解析JSON数据

  import com.google.gson.Gson;import java.util.*;public class GsonAndFastJsonUse {public static void main(String[] args) {Person p = new Person();p.setName("张三");    //String类型p.setAge(18);   //int类型List<String> hobby = new ArrayList<>();hobby.add("健身");hobby.add("游泳");hobby.add("编程");hobby.add("唱歌");hobby.add("弹吉他");p.setHobby(hobby);  //List类型Map<String,String> idCardInfo = new LinkedHashMap<>();idCardInfo.put("id","10000");idCardInfo.put("name","张三");idCardInfo.put("age","18");idCardInfo.put("address","China");p.setIdCardInfo(idCardInfo);    //Map类型Book book = new Book("月亮与六便士","描述了一个原本平凡的伦敦证券经纪人思特里克兰德,突然着了艺术的魔,抛妻弃子,绝弃了旁人看来优裕美满的生活,奔赴南太平洋的塔希提岛,用圆笔谱写出自己光辉灿烂的生命,把生命的价值全部注入绚烂的画布的故事。");p.setBook(book);    //book对象类型//1.1、将对象转换成JSON字符串String GsonStr = new Gson().toJson(p);System.out.println(GsonStr);//1.2、把字符串转成对象Person person = new Gson().fromJson(GsonStr, Person.class);System.out.println(person.getAge());System.out.println(person.getBook());System.out.println(person.getName());System.out.println(person.getHobby());System.out.println(person.getIdCardInfo());//1.3   将字符串形式的JSON数组,转成List对象ArrayList<String> listStr = new Gson().fromJson("[\"一二三四五\",\"上山打老虎\",\"床前明月光\",\"疑是地上霜\"]", ArrayList.class);for (String str : listStr) {System.out.println(str);}//2.1   把对象转成JSON字符串String fastJsonStr = JSON.toJSONString(p);System.out.println(fastJsonStr);//2.2   把JSON字符串转成对象Person person1 = JSON.parseObject(fastJsonStr,Person.class);System.out.println(person.getAge());System.out.println(person.getBook());System.out.println(person.getName());System.out.println(person.getHobby());System.out.println(person.getIdCardInfo());//2.3   把字符串形式的JSON数组转成List对象List<String> strs = JSON.parseArray("[\"一二三四五\",\"上山打老虎\",\"床前明月光\",\"疑是地上霜\"]", String.class);for (String str : strs) {System.out.println(str);}}}class Person {private String name;private int age;private List<String> hobby;private Map<String,String> idCardInfo;private Book book;······}class Book {private String name;private String info;······}

Java解析JSON数据相关推荐

  1. java解析json数据_java解析JSON数据详解

    JSON是目前最流行的轻量级数据交换语言(没有之一).尽管他是javaScript的一个子集.但由于其是独立与语言的文本格式,它几乎可以被所有编程语言所支持. 以下是对java语言中解析json数据的 ...

  2. JAVA 解析JSON数据

    JSON 是目前最流行的轻量级数据交换语言(没有之一).尽管他是javaScript的一个子集.但由于其是独立与语言的文本格式,它几乎可以被所有编程语言所支持. 以下是对java 语言中解析json数 ...

  3. 如何使用java解析json文件并将其写入数据库

    JAVA解析JSON数据文件 在使用第三方的api文档时,会得到相应的JSON数据文件,那么我们怎样将JSON文件写入数据库从而测试数据呢?下面我将给大家做一个简单的展示. 一.什么是JSON JSO ...

  4. java构造和解析json_Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  5. java json解析 代码_Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  6. Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  7. Java构造和解析Json数据之org.json

    一.介绍 org.json包是另一个用来beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json数据,在其官网http://www ...

  8. java解析json_JAVA解析JSON数据

    在使用第三方api的使用,有时候会从网络中获得json数据,所以说我们将如何解析json数据? 下面小编将通过以下几点来进行json的讲解 JSON (JavaScript Object Notati ...

  9. java构建json_Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

最新文章

  1. 红黑树 键值_查找(一)史上最简单清晰的红黑树讲解
  2. Linux文件系统2---VFS的四个主要对象
  3. Unity3D对手机屏幕触摸的控制脚本
  4. My97DatePicker详细说明
  5. Android Studio导入工程的正确姿势
  6. linux 通过at命令创建任务
  7. 给力的网络 有道的性能——802.11n与WLAN
  8. word2vec需要去标点吗_word2vec训练词向量前期处理-中文分词等
  9. vue权限问题解决方案
  10. 再谈设计模式之-1.单例模式
  11. 多线程 + java nio 实现按行读取并处理超大文件
  12. HttpUtils工具类
  13. 微型计算机gl703评测,华硕为Strix GL503GE/GL703GE笔记本更新至第8代CPU
  14. IT笔试题收集,免费下载
  15. 英伟达、英特尔、AMD显卡设置,减少游戏掉帧卡顿
  16. 【MySQL学习笔记(十六)】之redo日志超详细讲解
  17. 武汉大学计算机学院参考书,武汉大学计算机应用技术研究生考试科目和考研参考书目...
  18. JavaScript开发注意事项
  19. 正则表达式及re模块
  20. java文件上传下载工具类FileUtils

热门文章

  1. 5种比较流行的Linux发行版及其各自特点
  2. 牛顿迭代法算法的实现
  3. 新版Excel(完结版)
  4. 杂学第十三篇:内网centos7安装软件或者其他动态库的依赖,本文章以安装openoffice为例(包含解决思路,可能适用其他系统)
  5. SAP MM MM17物料主数据批量扩充视图
  6. 微信公众号文章批量下载成网页和PDF格式-真正完全免费工具
  7. 基于springboot的养老院系统(完美运行,数据库源代码,可远程调试)
  8. 百变红包封面,助力品牌传播!让每一个发出的红包都有价值!
  9. C51#学习笔记01#| Keil软件的使用入门教程
  10. 隧道建设手段结合科技能有多强大?盾构机可视化让工程化繁为简