JSON入门
基础入门
- 什么是JSON?:轻量级的数据格式。全称JavaScript Object Notation。
- 优点:易于阅读,易于程序的解析。
标准的JSON数据表示
- 数据结构:Object,Array
- 基本类型:String,number,true,false,null.
- 对于Object来说:用{}包含键值结构,Key必须是String类型,value为任何基本类型或数据结构。
- 对于Array来说:用[]来起始,并用逗号来分隔元素。
Json In Java
- 生成Json结构数据
//生成Json结构数据
public class JsonObject {
public static void main(String[] args) {
//jSONObjectSample();
//createJsonByMap();
createJsonByBean();
}
private static void jSONObjectSample() {
//别忘了导包json.jar
JSONObject wal = new JSONObject();
Object nullObj = null;
try {
wal.put("name","王明");
wal.put("age", 18.8);
wal.put("school", "大学");
wal.put("major", new String[] {"理发","挖掘机"});
wal.put("girlfriend", false);
wal.put("car", nullObj);
System.out.println(wal.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
//使用Map构建Json
private static void createJsonByMap() {
Map<String,Object> wal=new HashMap<String,Object>();
Object nullObj = null;
wal.put("name","王明");
wal.put("age", 18.8);
wal.put("school", "大学");
wal.put("major", new String[] {"理发","挖掘机"});
wal.put("girlfriend", false);
wal.put("car", nullObj);
System.out.println(new JSONObject(wal));
}
//使用Java Bean构建对象
private static void createJsonByBean() {
WangMing wm = new WangMing();
wm.setName("王明");
wm.setAge(18.8);
wm.setSchool("大学");
wm.setMajor(new String[] {"理发","挖掘机"});
wm.setGirlfriend(false);
wm.setCar(null);
System.out.println(new JSONObject(wm));
}
}
public class WangMing {
private String name;
private double age;
private String school;
private String[] major;
private boolean girlfriend;
private Object car;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getAge() {
return age;
}
public void setAge(double age) {
this.age = age;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public String[] getMajor() {
return major;
}
public void setMajor(String[] major) {
this.major = major;
}
public boolean isGirlfriend() {
return girlfriend;
}
public void setGirlfriend(boolean girlfriend) {
this.girlfriend = girlfriend;
}
public Object getCar() {
return car;
}
public void setCar(Object car) {
this.car = car;
}
}
- 解析JSON
//解析JSON
//弊端:不能反解析JavaBean
public class ReadJSONSample {
//wangming.json文件中内容:{"girlfriend":false,"major":["理发","挖掘机"],"school":"大学","name":"王明","age":18.8}
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//项目根目录下获取文件的路径
File file = new File(ReadJSONSample.class.getResource("/wangming.json").getFile());
//commons-io包下的FileUtils
//读取文件的内容
String content = FileUtils.readFileToString(file);
JSONObject jo = new JSONObject(content);
//细节判断
if (!jo.isNull("name")) {
System.out.println(jo.getString("name"));
}
System.out.println(jo.getDouble("age"));
System.out.println(jo.getBoolean("girlfriend"));
//获取json中的数组value
JSONArray majorArray = jo.getJSONArray("major");
for (int i = 0; i < majorArray.length(); i++) {
String s = (String)majorArray.get(i);
System.out.println("专业"+(i+1)+s);
}
}
}