JDK 1.6 ScriptEngine略

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

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

   
   
    /**
 * @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;
	}
	
}
    

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


你可能感兴趣的:(JavaScript,java,jdk,json,webservice)