JSON:行业内最为广泛的数据传输格式
定义:是一种与开发语言无关的、轻量级的数据格式,全称JavaScript Object Notation,不支持任何形式的注释
JSON基础知识:
一个简单的JSON样例
{
"name":"JSON快速入门",
"birthday":"1992-08-12",
"content":["JSON基础入门","常用JSON处理"],
"has_grilsfrieds":true,
"cars":null,
"time":{
"value":30.3,
"unit":"分钟"
}
}
解释:首先是一个大括号罩住,表示里面是一个对象,她是一种key-value的存储方式,value有不同的数据类型
数据结构
Object
使用花括号{}包含的键值对结构,key必须是String类型(使用双引号),value为任何基本类型或数据结构
Array
使用中括号[]来进行起始,并用逗号,来分隔元素(这个元素可以是基本类型,也可以是对象)
基本类型
String、number、true、false、null
JSONString接口,JSONObject类
使用json原生的构建方式
JSONObject wangxiaoer = new JSONObject();
wangxiaoer.put("name","wangxiaoer");
wangxiaoer.put("major",new String[]{"理发","挖掘机"});
wangxiaoer.put("car",null);
System.out.println(wangxiaoer.toString());//转换成字符串
使用Map来构建json对象
Map<String,Object> wangxiaoer= new HashMap<String,Object>();
wangxiaoer.put("name","wangxiaoer");
wangxiaoer.put("major",new String[]{"理发","挖掘机"});
wangxiaoer.put("car",null);
JSONObject json = new JSONObject(wangxiaoer);//支持传入map的对象
使用javaBean构建json对象(即对象的set和get方法)
WangXiaoEr wangxaioer = new WangXiaoEr();
wangxaioer.setName("王小二");
wangxiaoer.setAge(25.2);
wangxiaer.setMajor(new String[]{"理发","挖掘机"});
JSONObject json = new JSONObject(wangxiaoer);//支持传入map的对象
从文件读取json
File file = new File(类.class.getResource("文件名").getFile());
String content = FileUtils.readFileToString(file);
JSONObject json = new JSONObject(content);
System.out.println("姓名是:"+json.getString("name"));
System.out.println("年龄是:"+json.getDouble("age"));
System.out.println("是否有女朋友:"+json.getBoolean("has_girlsFriend"));
JSONArray major = json.getJSONArray("major");//当读取的文件中出现数组时,可以转换一下
for(int i=0;i<major.length();i++){
String m== (String)major.get(i);
}
//当从外部文件读取json内容时可能读到空的内容,所以得判断一下
if(!json.isNull("name")){
System.out.println("姓名是:"+json.getString("name")); 这样更严谨一些
}