java 处理 json字符串

最近项目中需要解析从远程返回的json字符串。找了网上一些例子,大部分都需要加入第三方的控件。比如GSON.但是第三方插件大部分都需要创建一个java对象用来映射json字符串。对于复杂的json字符串就可以这样搞。但是如果对于比较简单的json字符串,这样处理就有点浪费资源了。如果能够根据KEY值直接返回一个json的value值就是最好的处理方法。于是想到了能不能调用javascript中的eval来解析json 。通过查找资料发现jdk1.6已经支持对脚本的操作,既然如此,之前的想法就很容易实现了。

下面是我写的一段解析json的代码:

public String processJson(String jsonStr,String key)throws Exception{
  //将要执行的javascript语句
  String javascript = "function getValue(jsonStr,key){var text=eval('('+jsonStr+')');return text[key];}";
  //构造脚本引擎工厂
  ScriptEngineManager factory = new ScriptEngineManager();
  //获取javascript的脚本引擎
  ScriptEngine scriptEngine = factory.getEngineByName("javascript");
  //执行js方法
  scriptEngine.eval(javascript);
  //创建执行上下文
  Invocable invocable = (Invocable)scriptEngine;
  //调用javascript的getValue方法
  String value = (String)invocable.invokeFunction("getValue", new Object[]{jsonStr,key});
  return value;
 }

参数说明:

jsonstr:获得的json字符串

key:json中的key值

返回值

返回json字符串中与key值相对应的value值。

测试代码:

public class UseService{
 public static void main(String args[])throws Exception{
  UseService user = new UseService();
  String jsonStr = "{'key1':'hello','key2':'word'}";
  System.out.println(user.processJson(jsonStr, "key1"));
 }

}

执行结果:

hello

一点小发现,分享一下

 

老婆要求加的链接>>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值