IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java JSON解析 -> 正文阅读

[Java知识库]Java JSON解析

简介: JSON: JavaScript Obwject Notation JS对象简谱 , 是一种轻量级的数据交换格式.

我们知道在java中使用类和类中的属性是这样的

以书“Book”为例:

class Book{
private String name;
private String info;

get/set...
}
Book b = new Book();
b.setName(“金苹果”);
b.setInfo(“种苹果”);
....

在js中是这样的:

var b = new Object();
b.name = "金苹果";
b.info = "种苹果";

在XML中是这样的:

<book>//Book类
    <name>金苹果</name>//名字属性
    <info>种苹果</info>//简介属性
</book>

而在JSON中是这样的:

{
"name":"金苹果",
"info":"种苹果"
}

从最后两个对比可以看出,JSON比XML更简洁更易于传输和调用,被现今绝大多数程序员所选择

和使用,但也有一些不便的地方,如下面这段代码:

{
    "code": "10000",
    "charge": false,
    "msg": "查询成功",
    "result": {
        "status": "0",
        "msg": "ok",
        "result": {
            "city": "安顺",
            "cityid": "111",
            "citycode": "101260301",
            "date": "2015-12-22",
            "week": "星期二",
            "weather": "多云",
            "temp": "16",
            "temphigh": "18",
            "templow": "9",
            "img": "1",
            "humidity": "55",
            "pressure": "879",
            "windspeed": "14.0",
            "winddirect": "南风",
            "windpower": "2级",
            "updatetime": "2015-12-22 15:37:03",
            "index": [
                {
                    "iname": "空调指数",
                    "ivalue": "较少开启",
                    "detail": "您将感到很舒适,一般不需要开启空调。"
                },
                {
                    "iname": "运动指数",
                    "ivalue": "较适宜",
                    "detail": "天气较好,无雨水困扰,较适宜进行各种运动,但因气温较低,在户外运动请注意增减衣物。"
                }
            ],
            "aqi": {
                "so2": "37",
                "so224": "43",
                "no2": "24",
                "no224": "21",
                "co": "0.647",
                "co24": "0.675",
                "o3": "26",
                "o38": "14",
                "o324": "30",
                "pm10": "30",
                "pm1024": "35",
                "pm2_5": "23",
                "pm2_524": "24",
                "iso2": "13",
                "ino2": "13",
                "ico": "7",
                "io3": "9",
                "io38": "7",
                "ipm10": "35",
                "ipm2_5": "35",
                "aqi": "35",
                "primarypollutant": "PM10",
                "quality": "优",
                "timepoint": "2015-12-09 16:00:00",
                "aqiinfo": {
                    "level": "一级",
                    "color": "#00e400",
                    "affect": "空气质量令人满意,基本无空气污染",
                    "measure": "各类人群可正常活动"
                }
            },
            "daily": [
                {
                    "date": "2015-12-22",
                    "week": "星期二",
                    "sunrise": "07:39",
                    "sunset": "18:09",
                    "night": {
                        "weather": "多云",
                        "templow": "9",
                        "img": "1",
                        "winddirect": "无持续风向",
                        "windpower": "微风"
                    },
                    "day": {
                        "weather": "多云",
                        "temphigh": "18",
                        "img": "1",
                        "winddirect": "无持续风向",
                        "windpower": "微风"
                    }
                }
            ],
            "hourly": [
                {
                    "time": "16:00",
                    "weather": "多云",
                    "temp": "14",
                    "img": "1"
                },
                {
                    "time": "17:00",
                    "weather": "多云",
                    "temp": "13",
                    "img": "1"
                }
            ]
        }
    }
}

这种大量的属性会让你看的时候头皮发麻,以至于根本找不到哪一个归属于哪个,当然也有解决的

方法,可以从浏览器里输入JSON的字样,随便带你进去一个,如这个网址JSON在线解析及格式化验证 - JSON.cn

可以对上面的代码进行解析,可以很好的找到相关属性的位置。

我们可以看上面的代码可以发现有许多嵌套的地方,在JSON格式中可以与对象互相嵌套 [元素1,元素2...]的方式来进行元素的嵌套。

{
"name":"老师",
"age":18,
"pengyou":["张三","李四","王二","麻子",{
"name":"宇恒学生",
"info":"在不断地学习"
}],
"heihei":{
"name":"大长刀",
"length":"40m"
}
}

既然是Java与JSON,那JSON又能为Java做些什么?

它可以将Java中的对象 快速的转换为 JSON格式的字符串.

它可以将JSON格式的字符串, 转换为Java的对象.

可以通过Gson和FastJson来将对象转换为JSON字符串和将JSON字符串转换为对象,这两个是常用的方式,Gson是谷歌的,FastJson是阿里的,使用时要下载和引入相应的JAR包。

//转换JSON字符串的步骤:
//1. 引入JAR包
//2. 在需要转换JSON字符串的位置编写如下代码即可:
//String json = new Gson().toJSON(要转换的对象);
//案例:
Book b = BookDao.find();
String json = new Gson().toJson(b);
System.out.println(json);

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-11-22 12:12:16  更:2021-11-22 12:14:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:04:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码