out
JSON
What is JSON?
Here is a JSON.
{
"name": "Shuai Wang",
"id": "1240031",
"subject": [
"Algorithm",
"Internet",
"Database",
"Java"
],
"grade": 72.5,
"has_girlfriend": true,
"car": null
}
JSON(JavaScript Object Notation) is a light-weight data-interchange format. It is easy for human to read and write. It is also easy for computer to parse and generate. It is just a text format, which is language independent. (JSON official website)
How to write a JSON?
A JSON actually is a collection of key/value pairs. A JSON object starts with { and ends with }. Those key/value pairs are seperated by a comma.
Data Type
There are some types that “value” could have.
String e.g. "name","Shuai Wang"
number e.g. 72.5, 100
null e.g. null
boolean e.g. true, false
array e.g. ["Internet","Algorithm","Java","Database"]
object e.g. {,,,}
All keys should be String type.
How to create a JSON object with Java?
- Create a maven project.
- Add JSON dependency.
- Use JSONObject class to create a JSON object.
I strongly suggest you to create a JSON object using Java bean. The code is here:
Student.java
package com.wangshuai.Json2.bean;
public class Student {
private String name;
private String id;
private double grade;
private boolean has_girlfriend;
private Object car;
private String[] subject;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public double getGrade() {
return grade;
}
public void setGrade(double grade) {
this.grade = grade;
}
public boolean isHas_girlfriend() {
return has_girlfriend;
}
public void setHas_girlfriend(boolean has_girlfriend) {
this.has_girlfriend = has_girlfriend;
}
public Object getCar() {
return car;
}
public void setCar(Object car) {
this.car = car;
}
public String[] getSubject() {
return subject;
}
public void setSubject(String[] subject) {
this.subject = subject;
}
}
JSONObjectsSample.java
package com.wangshuai.Json2;
import org.json.JSONObject;
import com.wangshuai.Json2.bean.Student;
public class JSONObjectSample {
public static void main(String[] args) {
createJsonByJavaBean();
}
private static void createJsonByJavaBean() {
Student wangshuai = new Student();
Object nullObj = null;
wangshuai.setCar(nullObj);
wangshuai.setGrade(72.5);
wangshuai.setHas_girlfriend(true);
wangshuai.setId("1240031");
wangshuai.setName("Shuai Wang");
wangshuai.setSubject(new String[]{"Algorithm", "Internet", "Database", "Java"});
JSONObject ws = new JSONObject(wangshuai);
System.out.println(ws.toString());
}
}
Ouput
{"has_grilfriend":true,"subject":["Algorithm","Internet","Database","Java"],"grade":72.5,"name":"Shuai Wang","id":"1240031"}
We can also create a JSON object using Map.
package com.wangshuai.Json2;
import java.util.HashMap;
import java.util.Map;
import org.json.JSONObject;
public class JSONObjectSample {
public static void main(String[] args) {
createJsonByMap();
}
private static void createJsonByMap() {
Map<String, Object> wangshuai = new HashMap<String, Object>();
Object nullObj = null;
wangshuai.put("name","Shuai Wang");
wangshuai.put("id", "1240031");
wangshuai.put("grade", 72.5);
wangshuai.put("has_grilfriend", true);
wangshuai.put("car", nullObj);
wangshuai.put("subject", new String[]{"Algorithm", "Internet", "Database", "Java"});
JSONObject ws = new JSONObject(wangshuai);
System.out.println(ws.toString());
}
}
Ouput
{"has_grilfriend":true,"subject":["Algorithm","Internet","Database","Java"],"grade":72.5,"name":"Shuai Wang","id":"1240031"}
We can also directly create a JSON object with JSONObject class.
package com.wangshuai.Json2;
import org.json.JSONObject;
public class JSONObjectSample {
public static void main(String[] args) {
createJson();
}
private static void createJson() {
JSONObject wangshuai = new JSONObject();
Object nullObj = null;
wangshuai.put("name","Shuai Wang");
wangshuai.put("id", "1240031");
wangshuai.put("grade", 72.5);
wangshuai.put("has_grilfriend", true);
wangshuai.put("car", nullObj);
wangshuai.put("subject", new String[]{"Algorithm", "Internet", "Database", "Java"});
System.out.println(wangshuai.toString());
}
}
Ouput
{"has_grilfriend":true,"subject":["Algorithm","Internet","Database","Java"],"grade":72.5,"name":"Shuai Wang","id":"1240031"}
How to parse a JSON file?
We use a third-party File I/O processing package.
ReadJson.java
package com.wangshuai.Json2;
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 jsonFile = new File(ReadJson.class.getResource("/com/wangshuai/Json2/jsonfile/wangshuai.json").getFile());
String content = FileUtils.readFileToString(jsonFile);
JSONObject ws = new JSONObject(content);
System.out.println("name: "+ws.getString("name"));
System.out.println("id: "+ws.getString("id"));
System.out.println("grade: "+ws.getDouble("grade"));
System.out.println("Do you have a girlfriend? "+ws.getBoolean("has_girlfriend"));
if(!ws.isNull("car")){
System.out.println("Do you has a car? "+ws.getJSONObject("car"));
}
JSONArray subjects = ws.getJSONArray("subject");
System.out.println("Subjects:");
for(int i=0;i<subjects.length();i++){
System.out.println(subjects.get(i));
}
}
}
output
name: Shuai Wang
id: 830166
grade: 72.5
Do you have a girlfriend? true
Subjects:
Algorithm
Internet
Database
Java
The resource of all third-party packages
You can find JSON and Commons-io dependencies here.
最后再说两句(PS)
JSON Editor Online and some knowledges about maven. Check it out.
As the org.json doesn’t implement the functionality of generating JSON file, I don’t tell you how to generate a JSON file from a JSON Object. But we can use another better way to implement that, which is GSON. We talk about it later.
Welcome questions always and forever.