Java作為一門高度應用廣泛的編程語言,不僅能夠執行各種本地操作,而且也可以完成各種Web相關任務。在Web任務中,JavaScript(JS)常常用來實現前端的功能,JSON也常常被用來存儲Web應用中的數據。當Java執行Web應用的任務時,有時需要解析JS腳本中的JSON對象,從而能夠處理相應的數據。
在Java中使用JS解析JSON主要有兩種方法:使用Rhino和使用ScriptEngine。Rhino是一個用Java編寫的JS引擎,使用Rhino來解析JSON需要引入相關的jar庫,在執行時需要獲取JS腳本中的JSON對象。而使用ScriptEngine則更加方便,使用JDK自帶的JavaScript引擎即可,能夠直接將JS腳本中的JSON對象轉化為Java中的JSONObject類型。
//使用Rhino解析JSON示例代碼 String jsonStr = "{name: 'Tom', age: 18}"; ScriptEngineManager sem = new ScriptEngineManager(); ScriptEngine se = sem.getEngineByName("javascript"); se.eval("var json = " + jsonStr + ";");// 執行JS腳本將json定義為jsonStr語句 NativeObject no = (NativeObject) se.get("json");// 獲取json對象,類型為Rhino中附帶的NativeObject String name = no.get("name").toString();// 獲取變量名name對應的值 int age = Integer.parseInt(no.get("age").toString());// 獲取變量名age對應的值
//使用ScriptEngine解析JSON示例代碼 String jsonStr = "{name: 'Tom', age: 18}"; JSONObject jsonObject = new JSONObject(jsonStr);// 直接將JSON字符串轉為JSONObject類型 String name = jsonObject.getString("name");// 獲取變量名name對應的值 int age = jsonObject.getInt("age");// 獲取變量名age對應的值
以上兩種方法都可以解析JS腳本中的JSON對象,并獲取其中的數據。根據實際需求,可以選擇使用哪種方式,但一般來說使用ScriptEngine更為便捷。