JDK 1.6 ScriptEngine略

前段时间,需要从一个json的字符串中,拿出某个指定的元素。不知道用什么方式比较好,如果是XML格式大可使用诸如XPATH的方式进行指定查询,可这个是json格式,而且又在java后台,如果是前台我可以用javascript来描述这个json对象,javascript就可以用. . .的方式将元素的层次描述出来并且获得里面的值。可是在java代码中怎么能使用这一特性呢?
JDK 1.6提供了这样的一个新特性,script engine.

提供一个很好学习网址:里面有JAVA方面的N多例子:
[url]http://www.java2s.com/CN/Code/Java/JDK-6/VariablesboundthroughScriptEngine.htm[/url]



/**
* @author exiong
* <p><b>JDK 6 new features. Using script engine(java-script engine to resolve the json object easier.)
*/
public class ScriptEngineImplement {

/**
* @param webServiceURL Request web-service URL
* @param jsonKey script engine request json's key e.g.: json.a.b[0].c Detail information please refer to the java-script json engine.
* @return The text value of the specified jsonKey.
*/
public static String fetchContentFromJSONWebSerivce(String webServiceURL ,String jsonKey)
{
String result = "";
String jsonString = WebserviceContentFetcher.fetchWebServicesContent(webServiceURL);
String temp = String.format("json = %s ; json = json.%s", jsonString , jsonKey);
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine se = sem.getEngineByName("js");
try {
result = se.eval(temp).toString();
} catch (ScriptException e) {
e.printStackTrace();
}
return result;
}

}

代码中的[b]WebserviceContentFetcher.fetchWebServicesContent(webServiceURL);[/b]是我自己写的一个访问webservice数据的类,就是这个webservice给我返回的一串json格式的字符串。然而我需要里面指定的某个元素。于是我使用javaScriptEngine(当然还有很多其他的脚本引擎),构造出一个在js中使用的json对象,通过js来获得指定的元素。
注意: 这个js引擎是本事就带返回值的,但是其中temp中要求是不能有返回值的,也不存在什么定义变量的说法。也就是说不能写成 var json .... return json..类似的语句。其他的我自己还要继续研究。不过这个新特性还是给我提供了很方便的处理json的新方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值