JSON總結(java篇一)
JSON簡介
JSON(JavaScript Object Notation)
是一種輕量級的資料交換格式。它基于ECMAScript的一個子集。 JSON采用完全獨立于語言的文本格式,但是也使用了類似于C語言家族的習慣(包括C、C++、C#、Java、JavaScript、Perl、Python等)。這些特性使JSON成為理想的資料交換語言。 易于人閱讀和編寫,同時也易于機器解析和生成(一般用于提升網絡傳輸速率)。
JSON文法
資料在鍵值對中
資料由逗号分隔
花括号儲存對象
方括号儲存數組
JSON值類型
number(整數或浮點數)
String(字元串,在雙引号中)
boolean(布爾值,true或false)
array(數組,用方括号表示)
Object(對象,在花括号中,例如javaScript對象)
null
java中的用法
準備工作
在java中使用json的方法首先要導入第三方jar包,進入json首頁http://json.org,然後下載下傳java第三方包,這裡我們使用JSON-java這個包。
點選後進入github下載下傳頁面下載下傳jar包。
這裡我使用的是maven項目,是以可以在http://maven.org中搜尋JSON-java的坐标。
在eclipse中建立maven項目,配置好pom.xml
JSON的使用
1. 使用Map集合建立JSON
public static void createJSONByMap() {
Map map = new LinkedHashMap();
map.put("name", "老王");
map.put("age", 35);
map.put("height", 1.73);
map.put("major", new String[] { "理發", "挖掘機" });
map.put("hasGirlFriend", false);
map.put("car", null);
JSONObject json = new JSONObject(map);
System.out.println("方法名:createJSONByMap()---" + json);
}
運作結果:
方法名:createJSONByMap()---{"major":["理發","挖掘機"],"name":"老王","hasGirlFriend":false,"age":35,"height":1.73}
從結果可以看出,car的字段沒有列印出來,說明當value為null時轉換JSON後不會顯示出來
2. 使用javaBean建立JSON
javaBean
package com.hjw.maven.jsonTest;
import java.util.Arrays;
public class Person {
private String name;
private int age;
private double height;
private String[] major;
private boolean hasGirlFriend;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public String[] getMajor() {
return major;
}
public void setMajor(String[] major) {
this.major = major;
}
public boolean isHasGirlFriend() {
return hasGirlFriend;
}
public void setHasGirlFriend(boolean hasGirlFriend) {
this.hasGirlFriend = hasGirlFriend;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", height=" + height
+ ", major=" + Arrays.toString(major) + ", hasGirlFriend="
+ hasGirlFriend + "]";
}
}
public static void createJSONByBean() {
Person person = new Person();
person.setName("老王");
person.setAge(35);
person.setHasGirlFriend(false);
person.setHeight(17.2);
person.setMajor(new String[] { "廚師", "程式設計" });
System.out.println("方法名:createJSONByBean()---" + new JSONObject(person));
}
方法名:createJSONByBean()---{"major":["廚師","程式設計"],"name":"老王","hasGirlFriend":false,"age":35,"height":17.2}
3. 通過JSONObject建立JSON
public static void createJSON() {
JSONObject json = new JSONObject();
Object objNull = null;
json.put("name", "老王");
json.put("age", 35);
json.put("height", 1.73);
json.put("major", new String[] { "理發", "挖掘機" });
json.put("hasGrilFriend", false);
System.out.println("方法名:createJSON1()---" + json);
}
方法名:createJSON()---{"hasGrilFriend":false,"major":["理發","挖掘機"],"name":"老王","age":35,"height":1.73}
4. 讀取檔案建立JSONObject
在maven項目src/main/resource中建立laowang.json檔案,然後引入commons-io的maven坐标
laowang.json
{
"hasGrilFriend": false,
"major": [
"理發",
"挖掘機"
],
"name": "老王",
"age": 35,
"height": 1.73
}
代碼:
public static void createJsonByFile() throws IOException {
File file = new File(JsonDemo.class.getResource("/laowang.json")
.getFile());
String content = FileUtils.readFileToString(file);
JSONObject json = new JSONObject(content);
System.out.println("name=" + json.getString("name"));
System.out.println("age=" + json.getInt("age"));
System.out.println("height=" + json.getDouble("height"));
System.out.println("hasGirlFriend=" + json.getBoolean("hasGirlFriend"));
System.out.print("major=[");
for (Object str : json.getJSONArray("major")) {
System.out.print(str + ",");
}
System.out.println("]");
}
運作結果:
name=老王
age=35
height=1.73
hasGirlFriend=false
major=[理發,挖掘機,]
5. 通過JSONObject建立json檔案
public static void createJsonFileByWriter() throws IOException {
Map map = new LinkedHashMap();
map.put("name", "老王");
map.put("age", 35);
map.put("height", 1.73);
map.put("major", new String[] { "理發", "挖掘機" });
map.put("hasGrilFriend", false);
JSONObject json = new JSONObject(map);
URL url=JsonDemo.class.getResource("/");
String path=url.getPath();
path=path.substring(0, path.indexOf("jsonTest"));
File file = new File(path+"/jsonTest/src/main/resource/laowang1.json");
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
json.write(bw);
bw.close();
System.out.println("end");
}
代碼運作後會自動在maven項目中的resource路徑下生産一個名為laowang1.json的檔案,其中jsonTest為項目名