使用Java读取JSON数据

 

 

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 的内容:

 

package com.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(); 
} 
} 
   
}

 

posted @ 2020-05-07 17:16  愚蠢的程序员  阅读(4440)  评论(0编辑  收藏  举报