JSON 官网:http://www.json.org/
在官网页面的下方,是 JSON 数据格式在各个语言中的实现方法和操作类库
找到 Java 语言,选择 google-gson (成熟,且操作简单,被大多数开发者所使用的)
google-gson 下载链接:https://github.com/google/gson
截止 2017/3/30 最新版本 gson-2.8.0 下载链接:
https://download.csdn.net/download/qq_33857502/10843609
工程名:Yidaoboshi
包名:com.exocr.httpclient
类名:TestJson.java
测试json是博主用所做项目中图片智能识别获取到的,以下的是部分json截图
test.json 的内容:
工程结构目录如下:(选择 gson-2.8.0.jar,右键->Build Path->Add to Build Path即可实现下图效果)
代码:
package com.exocr.httpclient;
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;
import java.io.FileNotFoundException;
import java.io.FileReader;
public class TestJson {
public static void main(String[] args) {
//将 test.json 的数据转换成 JSON 对象
//需要创建一个解析器,可以用来解析字符串或输入流
JsonParser parser=new JsonParser();
try {
//创建一个JSON对象,接收parser解析后的返回值
//使用parse()方法,传入一个Reader对象,返回值是JsonElement类型
//因为要读取文件,所以传入一个FileReader
//JsonObject是JsonElement的子类,所以需要强转
//有异常抛出,使用 try catch 捕获
//D:\test.json
JsonObject object=(JsonObject) parser.parse(new FileReader("D:\\test.json"));
//先将两个外部的属性输出 category 和 pop
//先 get 到名称(键),返回的是 JsonElement,再 getAs 转换成什么类型的值
//依据 json 格式里的数据类型
System.out.println("error_code="+object.get("error_code").getAsInt());//错误代码
System.out.println("description="+object.get("description").getAsString());//识别结果
System.out.println("request_id="+object.get("request_id").getAsString());//request_id
System.out.println("recognize_time="+object.get("recognize_time").getAsInt());//recognize_time
System.out.println("available_count="+object.get("available_count").getAsInt());//available_count
//接着读取test.json里的JSON数组,名称是languages(键)
//创建一个JsonArray
JsonArray array=object.get("result").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("words="+subObject.get("words").getAsString());
}
}
catch(JsonIOException e){
e.printStackTrace();
}
catch (JsonSyntaxException e) {
e.printStackTrace();
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
运行效果部分截图:(部分数据可能因为编码问题导致显示的时候乱码,自己处理)
该模块只是博主智能图片识别项目中的一个小模块,有需要的可以拿走哦!