我們寫項目時有時候會接收一些json格式的數據,那么我們該如何解析它們呢。
首先我們應該了解什么是json:
json的語法規則:
- json會通過{}來保存對象
- json通過[]來保存數組
- 數據會通過鍵值對的形式保存
- 數據之間會用,隔開
例如
{"words_result":[{"words":"蘇E05EV85"}],"log_id":1416028548941363325,"words_result_num":1}
這個就是一段json格式的字符串,當然,我們是要對結果進行解析,並不用知道這些具體代表什么意思。這個字符串總共有三組數據,第一組數據的值由[ ]包裹,可以得出它是一個數組格式,即使只有一條數據,后面的兩條就是普通的鍵值對格式了。
想要解析字符串首先要下載一個依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.28</version>
</dependency>
我們需要用到依賴中的兩個類:JSONObject 與 JSONArray。
具體代碼如下:
String result="{"words_result":[{"words":"蘇E05EV85"}],"log_id":1416028548941363325,"words_result_num":1}";
JSONObject root = new JSONObject().parseObject(result);// 將json格式的字符串轉換成json
String value = root.getString("log_id");//定義一個字符串,其值為根據json對象中的數據名解析出的其所對應的值
String value2 = root.getString("log_id");//重復上一步操作,得到相對應的值
//將結果打印輸出
System.out.println(value);//打印輸出
System.out.println(value2);//打印輸出
我們得到的結果為
由於第一項為數組,所以需要用到JSONArray,實現如下
JSONArray Arr = root.getJSONArray("words_result");//根據json對象中數組的名字解析出其所對應的值
for (int i = 0; i < Arr.size(); i++) {
JSONObject dataBean = (JSONObject) Arr.get(i);//得到數組中對應下標對應的json對象
String plate = dataBean.getString("words");//根據json對象中的數據名解析出相應數據
System.out.println(plate);//打印輸出
}
這樣我們就可以拿到我們需要的結果了:
快來試試看吧!