Java附带的标准JSON解析器

Java附带的标准JSON解析器,java,json,parsing,Java,Json,Parsing,我需要能够从文件中读取JSON字符串并对其进行解析 我想知道字符串是否是“格式良好”的JSON。如果是这样,我需要能够读取所有的名称-值对 是否有一个与Java本身捆绑在一起的JSON库 我更喜欢标准Java发行版附带的东西,而不是下载另一个外部库 我正在使用JDK 1.6。在不使用外部库的情况下尝试它的方法 编辑 GitHub是来自指定链接的更可靠的代码源。 关键是使用javascript进行解析,可以通过以下方式调用: public class JSON2Java { priva

我需要能够从文件中读取JSON字符串并对其进行解析

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

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

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


我正在使用JDK 1.6。

在不使用外部库的情况下尝试它的方法

编辑

GitHub是来自指定链接的更可靠的代码源。

关键是使用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);
};
toJava=function(o){
返回o==null?null:o.toJava();
};
Object.prototype.toJava=函数(){
var m=new java.util.HashMap();
for(此字段中的var键)
if(this.hasOwnProperty(key))
m、 put(key,toJava(this[key]);
返回m;
};
Array.prototype.toJava=函数(){
var l=此长度;
var a=newjava.lang.reflect.Array.newInstance(java.lang.Object,l);
对于(变量i=0;i
1.6中内置了javax.script Api

据我所知不是这样。大多数Java的JSON解析器都列在页面底部的JSON.org上。有些人似乎使用rhino,有人使用过JSON simple,这是谷歌的JSON工具包,我使用过JSON simple。它看起来很冗长(与Python相比),但对于JSON来说是一个有效且易于使用的工具。@qqilihq感谢您指出这一点。更新我的答案,使ppl不会被误导。再次感谢!!我希望我能投这一票!!谢谢这与其仅仅链接到外部资源,不如将相关材料张贴在此处,并给出适当的属性。这将使答案保持相关,即使链接在将来失效。@davison,那么您可以接受我的请求。@Thomas Owens我将链接提供给Git存储库。嗯,我粘贴了代码,但没有包,它是无用的。有人能完成这个并添加正确的导入吗?read()方法似乎也是伪代码,可以用实际实现代替。