欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JSON入门Java篇-7-JSON总结

程序员文章站 2022-03-01 15:45:08
...

      到这里,我们学习了如何用例JSON-JAVA来构建JSON数据和解析JSON。其实整个过程,看起来,使用也不是很方便是不是。确实,基于json.org的解析和构造看起来很原始,但是确实需要我去了解和学习。在前面解析的基础之上,这里插入一个经常使用的小技巧。

1.解析之前,先进行为空判断

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;
import org.json.JSONArray;
import org.json.JSONObject;

public class ReadJSON {

	public static void main(String[] args) throws IOException {
		
		//获取文件路径并加载
		File file = new File("./test.json");
		
		//通过 commons-io 里方法读取文件内容
		String content = FileUtils.readFileToString(file, "utf8");
		//转换JSON对象进行处理
		JSONObject jsonObject = new JSONObject(content);
		
		if(jsonObject.isNull("address")){
			
			System.out.println("该JSON文件不存在address这个key字段");
		}
		
		if(!jsonObject.isNull("name")){
			//根据getString()获取姓名
			System.out.println("姓名是:"+jsonObject.getString("name"));
			
		}
		//根据getDouble()获取年龄
		System.out.println("年龄:"+jsonObject.getDouble("age"));
		//获取是否有女朋友
		System.out.println("是否有女朋友:"+jsonObject.getBoolean("has_girlfriend"));
		
		//把json数组对象转换成Java的数组对象
		JSONArray jsonarray = jsonObject.getJSONArray("major");
		//变量专业
		for(int i=0; i<jsonarray.length(); i++){
			
			System.out.println("专业-"+(i+1)+":"+ jsonarray.get(i));
		}
		
	}

}
       上面插入了为空和不为空判断。当我们想根据一个key来获取对应的value的时候,最后先进行下不为空的判断,然后才去获取。毕竟JSON数据有时候来源网络,可能存在字段丢失或者不准确的情况,如果本来就不准确,那么获取剩下的信息就没有意义。

总结:

       利用json.org构造JSON对象和commons-io进行解析JSON数据就介绍到这里。其实关于JSON解析,开源工具还有其他的,例如Google的GSON,和阿里巴巴的Fast json。这里举例阿里巴巴的Fast json在github上的地址:https://github.com/alibaba/fastjson,这个github有1万多个star,说明还是很出名的。接下来后面的文章,我打算介绍阿里巴巴的fast json的基本使用,你会发现要比json.org要简单很方便,强大很多。

相关标签: JSON入门 总结

上一篇: data science学习笔记1

下一篇: git