----------------siwuxie095

 
 

 
 

 
 

 
 

 
 

 
 

JSON 官网:http://www.json.org/

 
 

在官网页面的下方,是
JSON 数据格式在各个语言中的实现方法和操作类库

 
 

找到
Java 语言,选择 google-gson (成熟,且操作简单,被大多数开发者所使用的)

 
 

 
 

google-gson 下载链接:https://github.com/google/gson

 
 

截止 2017/3/30 最新版本 gson-2.8.0 下载链接:

http://download.csdn.net/detail/siwuxie095/9799544

 
 

 
 

 
 

 
 

工程名:TestReadJSON

包名:com.siwuxie095.json

类名:ReadJSON.java

 
 

 
 

打开资源管理器,在工程 TestReadJSON 文件夹下,放入

一个 JSON 文件:test.json

 
 

test.json 的内容:

 
 

 
 

 
 

 
 

打开资源管理器,在工程 TestReadJSON 文件夹下,创建一个

文件夹:lib,在其中放入:gson-2.8.0.jar

 
 

 
 

工程结构目录如下:

 
 

 
 

 
 

 
 

选择
gson-2.8.0.jar,右键->Build Path->Add to Build Path

 
 

此时,工程结构目录一览:

 
 

 
 

 
 

 
 

 
 

代码:

 
 

package com.siwuxie095.json;

 
 

import java.io.FileNotFoundException;

import java.io.FileReader;

 
 

import com.google.gson.JsonArray;

import com.google.gson.JsonIOException;

import com.google.gson.JsonObject;

import com.google.gson.JsonParser;

import com.google.gson.JsonSyntaxException;

 
 

public class ReadJSON {

 

/**

* 通过解析器将test.json转换成JsonObject

*

* @param args

*/

 
 

public static
void main(String[] args) {

 

//将 test.json 的数据转换成 JSON 对象

//需要创建一个解析器,可以用来解析字符串或输入流

JsonParser parser=new JsonParser();

 

 

try {

 

//创建一个JSON对象,接收parser解析后的返回值

//使用parse()方法,传入一个Reader对象,返回值是JsonElement类型

//因为要读取文件,所以传入一个FileReader

//JsonObject是JsonElement的子类,所以需要强转

//有异常抛出,使用 try catch 捕获

JsonObject object=(JsonObject) parser.parse(new FileReader("test.json"));

 

 

//先将两个外部的属性输出 category 和 pop

//先 get 到名称(键),返回的是 JsonElement,再 getAs 转换成什么类型的值

//依据 json 格式里的数据类型

System.out.println("category="+object.get("category").getAsString());

System.out.println("pop="+object.get("pop").getAsBoolean());

 

 

//接着读取test.json里的JSON数组,名称是languages(键)

//创建一个JsonArray

JsonArray array=object.get("languages").getAsJsonArray();

for (int i = 0; i < array.size(); i++) {

//分隔线

System.out.println("-----------------");

//创建一个JsonObject,从array的下标获取,get() 返回JsonElement类型

//这里不用强转,而用 getAsJsonObject() 进行转换

JsonObject subObject=array.get(i).getAsJsonObject();

System.out.println("id="+subObject.get("id").getAsInt());

System.out.println("name="+subObject.get("name").getAsString());

System.out.println("ide="+subObject.get("ide").getAsString());

 

}

 

 

 

 

} catch (JsonIOException e) {

e.printStackTrace();

} catch (JsonSyntaxException e) {

e.printStackTrace();

} catch (FileNotFoundException e) {

e.printStackTrace();

}

}

 
 

}

 
 

 
 

运行一览:

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

【made by siwuxie095】

使用Java读取JSON数据的更多相关文章

  1. Java学习-029-JSON 之三 -- 模仿 cssSelector 封装读取 JSON 数据方法

    前文简单介绍了如何通过 json-20141113.jar 提供的功能获取 JSON 的数据,敬请参阅:Java学习-028-JSON 之二 -- 数据读取. 了解学习过 JQuery 的朋友都知道, ...

  2. iOS彩票项目--第七天,初次读取json数据、KVC转模型技巧、运行时字典转模型以及初步对显示网页的操作并且跟踪标签

    一.初次读取json数据 二.KVC转模型技巧,这里的技巧主要解决的是字典中的key 与 模型中有的属性对应不起来的时候 的解决办法 <方法1> <方法2>运行时字典转模型,运 ...

  3. ajax读取json数据

    首先建立json.txt文件 { "programmers": [ { "firstName": "Brett", "lastNa ...

  4. 在MVC中动态读取JSON数据创建表格

    //使用getJSON // ("@Url.Action("GetAllUsers","User")" ,json文件的路径.也可以是 /M ...

  5. js读取json数据(php传值给js)

    <?php $array =array('fds','fdsa','fdsafasd');  // json_encode($array); ?> <html> <hea ...

  6. 当向后台插入或读取JSON数据遇见回车时

    今天在项目中发现.当插入或读取JSON数据时遇见回车符.返回JSON数据格式时会报错(firebug里体现为乱码),百度了一下发现JSON不支持字符串里存在回车! 解决的方法: 在向接口插入带json ...

  7. Javascript实例技巧精选(6)—滚动鼠标中键读取Json数据分页显示网页内容

    >>点击这里下载完整html源码<< 截图如下: 滚动鼠标中键读取Json数据分页显示网页内容,关键的Javascript如下: <script type="t ...

  8. EF+LINQ事物处理 C# 使用NLog记录日志入门操作 ASP.NET MVC多语言 仿微软网站效果(转) 详解C#特性和反射(一) c# API接受图片文件以Base64格式上传图片 .NET读取json数据并绑定到对象

    EF+LINQ事物处理   在使用EF的情况下,怎么进行事务的处理,来减少数据操作时的失误,比如重复插入数据等等这些问题,这都是经常会遇到的一些问题 但是如果是我有多个站点,然后存在同类型的角色去操作 ...

  9. Java读取Excel数据

    Java读取Excel数据,解析文本并格式化输出 Java读取Excel数据,解析文本并格式化输出 Java读取Excel数据,解析文本并格式化输出 下图是excel文件的路径和文件名 下图是exce ...

随机推荐

  1. iostat相关参数说明——await:平均每次设备I/O操作的等待时间 (毫秒),如果%util接近 100%,说明产生的I/O请求太多

    iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视.它的特点是汇报磁盘活动统计情况,同时也会汇报出 CPU使用情况.同vmstat一样, ...

  2. application.yml配置log日志

    #日志文件的配置logging: pattern: console: "%d - %msg%n" file: /var/log/sell.log 注解@Slf4j

  3. Linux_总结_02_最小化安装后需要安装和更新的命令

    一.前言 二.安装命令 1.配置yum源 2.更新yum sudo yum -y update 3.安装ifconfig 最小化安装后,是无法使用ifconfig命令的. 可参见:CentOS7下解决 ...

  4. PHP封装返回Ajax字符串和JSON数组

    <?php class DBDA { public $host="localhost"; public $uid = "root"; public $pw ...

  5. python_Notepad++编码集的说明

    window环境 [以ANSI格式编码]:简对应python中的"gbk"编码 [以UTF-8无BOM格式编码]:对应python中的"utf-8"编码 [以U ...

  6. uva10780(分解质因数)

    可以直接用高精度来暴力求. 也可以不用高精度: 把m分解质因数,记录每个因数和它的次数.然后计算每个因数在n的阶乘里出现了多少次,再把这个次数除以它在m中的次数,就是可能的k值.取最小的k. #inc ...

  7. 西瓜书概念整理(chapter 1-2)熟悉机器学习术语

    括号表示概念出现的其他页码, 如有兴趣协同整理,请到issue中认领章节 完整版见我的github:ahangchen 觉得还不错的话可以点个star ^_^ 第一章 绪论 Page2: 标记(lab ...

  8. RequireJS 也可以引入 VUE

    RequireJS 也可以引入 VUE 由于 FastAdmin 是使用 RequireJS 导入 JS 模块的. 有人想把 VUE 也引入进去,虽然说也是可以,VUE 还是推荐使用 Webpack ...

  9. WPF开发中Designer和码农之间的合作

    想要用WPF做出一流的软件界面, 必须要Designer和码农通力合作.理想的情况是平时并行开发,Designer用Expression套件(包括Design和Blend)来设计界面,码农开发Mode ...

  10. DB字段顺序与类的属性顺序一致:{Oracle.DataAccess.Client.OracleException ORA-00932: 数据类型不一致: 应为 TIMESTAMP, 但却获得 NUMBER

    {Oracle.DataAccess.Client.OracleException ORA-00932: 数据类型不一致: 应为 TIMESTAMP, 但却获得 NUMBER     应用程序中类型T ...