Java捆绑的标准JSON解析器

我需要能够从文件中读取JSON字符串并解析它。

我想知道字符串是否是“格式良好”的JSON。 如果是这样,我需要能够读取所有名称值对。

是否有与Java本身捆绑在一起的JSON库?

我更喜欢标准Java发行版附带的东西,而不是下载另一个外部库。

我使用的是JDK 1.6。

尝试不使用外部库的方法

http://blog.julienviet.com/2011/12/26/json-to-java-with-jdk6/

EDITED

GitHub是来自指定链接的更可靠的代码源。 https://gist.github.com/vietj/1521692

关键是使用javascript进行解析,可以使用以下命令调用:

public class JSON2Java { private static final ScriptEngine jsonParser; static { try { String init = read(Tools.class.getResource("json2java.js")); ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript"); engine.eval(init); jsonParser = engine; } catch (Exception e) { // Unexpected throw new AssertionError(e); } } public static Object parseJSON(String json) { try { String eval = "new java.util.concurrent.atomic.AtomicReference(toJava((" + json + ")))"; AtomicReference ret = (AtomicReference)jsonParser.eval(eval); return ret.get(); } catch (ScriptException e) { throw new RuntimeException("Invalid json", e); } } } 

Javascript部分,json2java.js:

 toJava = function(o) { return o == null ? null : o.toJava(); }; Object.prototype.toJava = function() { var m = new java.util.HashMap(); for (var key in this) if (this.hasOwnProperty(key)) m.put(key, toJava(this[key])); return m; }; Array.prototype.toJava = function() { var l = this.length; var a = new java.lang.reflect.Array.newInstance(java.lang.Object, l); for (var i = 0;i < l;i++) a[i] = toJava(this[i]); return a; }; String.prototype.toJava = function() { return new java.lang.String(this); }; Boolean.prototype.toJava = function() { return java.lang.Boolean.valueOf(this); }; Number.prototype.toJava = function() { return java.lang.Integer(this); };