菜鳥教程的 JSON 教程鏈接:https://www.runoob.com/json/json-tutorial.html
一、JSON 格式簡析。
{ "person_num": 1, "person_info": [{ "body_parts": { "nose": { "x": 96.34375, "y": 101.53125 }, "right_knee": { "x": 89.6875, "y": 314.53125 }, "location": { "width": 91.40377044677734, "height": 354.7197875976562 } }] }
1. 對象在 { } 大括號中
2. 數組在 [ ] 中括號中
3. key:value 值,中間用冒號隔開
二、將 String 類型的數據轉換為 JSON 格式數據
需要導入幾個 jar 包,文件在以下鏈接中:
鏈接:https://pan.baidu.com/s/1SNMIPJal0-YKpsMqTnzjsg
提取碼:ezmb
復制這段內容后打開百度網盤手機App,操作更方便哦
需要導入的類如下:
import net.sf.json.JSONArray; import net.sf.json.JSONObject;
String 類型數據轉換為 JSON 格式數據 代碼如下:
//result 是上方 JSON 數據的String 格式
String result = "{"person_num": 1,"person_info": [{"body_parts": {"nose": {"x": 96.34375,"y": 101.53125},"right_knee": {"x": 89.6875,"y": 314.53125},"location": {"width": 91.40377044677734,"height": 354.7197875976562}}]}"
JSONObject jsonObject = JSONObject.fromObject(result);//將String 類型數據轉換為 JSON 格式數據
三、將 JSON 中的數據提取出來
代碼示例為上方提供的 JSON 格式數據(取出其中 "nose" 的數據)
1. 取對象中的數組數據:("person_info" 對應的 JSON 值是數組類型)
JSONArray person_info = jsonObject.getJSONArray("person_info");
2. 取數組中的對象:(取 person_info 中第一個數據,在上面的例子中 "person_info" 數組中有兩個數據:"body_parts" 和 "location" )
JSONObject body_parts = person_info.getJSONObject(0);
3. 一個對象中有多個對象:
是可以直接利用第 1 個示例中的方法調用,但是這里比較特殊的地方在於:"body_parts" 剛從數組中得到數據,還要進行轉化:
//由於 body_parts中還有JSONObject,因此還要將 body_parts取出來 body_parts = body_parts.getJSONObject("body_parts"); //得到鼻子的信息 JSONObject nose = body_parts.getJSONObject("nose");
4. 得到 key-value值:(得到 "nose" 中的 x、y 值)
double nose_x = nose.getDouble("x"); double nose_y = nose.getDouble("y");
后面就可以直接利用 JSON 中的數據了。
