JSON(JavaScript Object Notation)是一种与开发语言无关的、轻量级的数据格式。
如果对json还没有什么了解,可以上官网看看
下面讲解如何用Java生成json数据
1.这里我们下载了JSON-java,然后将文件夹里的所有Java类文件复制到项目的某个包下
2.然后我们编写一个栗子来生成一个json数据
JSONTest.java
package test;
import org.json.JSONObject;
public class JSONTest {
public static void main(String[] args) {
JSONObject people = new JSONObject();
Object nullObj = null;
people.put("name", "张三");
people.put("sex", "男");
people.put("age", 24);
people.put("birthday", "1990-12-23");
people.put("hobbies", new String[] { "看书", "听音乐", "踢球" });
people.put("isVIP", false);
people.put("house", nullObj);
people.put("comment", "注释");
System.out.println(people);
}
}
运行程序我们可以在控制台看到输入了json格式的数据
3.使用Map来构建json数据
JSONTest.java
package test;
import java.util.HashMap;
import java.util.Map;
import org.json.JSONObject;
public class JSONTest {
public static void main(String[] args) {
Map<String,Object> people=new HashMap<String,Object>();
Object nullObj=null;
people.put("name", "张三");
people.put("sex", "男");
people.put("age", 24);
people.put("birthday", "1990-12-23");
people.put("hobbies", new String[]{"看书","听音乐","踢球"});
people.put("isVIP", false);
people.put("house", nullObj);
people.put("comment", "注释");
System.out.println(new JSONObject(people).toString());
}
}
运行程序,可以在控制台看到生成了相应的json数据
4.使用Java Bean构建对象
People.java
package test;
import java.util.Date;
public class People {
private String name;
private String sex;
private int age;
private Date birthday;
private String[] hobbies;
private boolean isVIP;
private Object hose;
public People() {
}
public People(String name, String sex, int age, Date birthday, String[] hobbies, boolean isVIP, Object hose) {
super();
this.name = name;
this.sex = sex;
this.age = age;
this.birthday = birthday;
this.hobbies = hobbies;
this.isVIP = isVIP;
this.hose = hose;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String[] getHobbies() {
return hobbies;
}
public void setHobbies(String[] hobbies) {
this.hobbies = hobbies;
}
public boolean isVIP() {
return isVIP;
}
public void setVIP(boolean isVIP) {
this.isVIP = isVIP;
}
public Object getHose() {
return hose;
}
public void setHose(Object hose) {
this.hose = hose;
}
@Override
public String toString() {
return "People [name=" + name + ", sex=" + sex + ", age=" + age + ", birthday=" + birthday + ", hobbies="
+ hobbies + ", isVIP=" + isVIP + ", hose=" + hose + "]";
}
}
JSONTest.java
package test;
import java.util.Date;
import org.json.JSONObject;
public class JSONTest {
public static void main(String[] args) {
People people=new People();
String Array[]={"看书","听音乐","踢球"};
people.setName("张三");
people.setSex("男");
people.setAge(24);
people.setBirthday(new Date());
people.setHobbies(Array);
people.setVIP(false);
people.setHose(null);
System.out.println(new JSONObject(people));
}
}
运行程序可以在控制台看到生成的json数据
4.有些时候我们并不是自己输入数据生成json,而有可能是接入别的API或者从文件读取json数据,下面是一个从json文件读取数据的栗子
people.json
{
"birthday": "Sun Nov 20 14:09:43 CST 2016",
"hobbies": [
"看书",
"听音乐",
"踢球"
],
"sex": "男",
"name": "张三",
"VIP": false,
"age": 24
}
ReadJSON.java(为了读取方便导入了commons-io-2.5.jar)
package test;
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(ReadJSON.class.getResource("people.json").getFile());
String content=FileUtils.readFileToString(file,"utf-8");
JSONObject jsonObject=new JSONObject(content);
System.out.println("姓名:"+jsonObject.getString("name"));
System.out.println("性别:"+jsonObject.getString("sex"));
System.out.println("年龄:"+jsonObject.getInt("age"));
System.out.println("是否会员:"+jsonObject.getBoolean("VIP"));
System.out.println("生日:"+jsonObject.getString("birthday"));
JSONArray hobbies=jsonObject.getJSONArray("hobbies");
System.out.print("专业:");
for(int i=0;i<hobbies.length();i++){
String hobby=(String) hobbies.get(i);
System.out.print(hobby+" ");
}
if(!jsonObject.isNull("lastName")){//如果存在“lastName”,则打印;否则不打印
System.out.println("姓名:"+jsonObject.getString("name"));
}
}
}
运行程序,读取json数据显示在控制台
欢迎访问我的个人博客 http://www.chengzequn.top