JavaNashorn从文件解析json
我正在尝试使用JavaNashorn从文件解析json,java,json,intellij-idea,nashorn,Java,Json,Intellij Idea,Nashorn,我正在尝试使用java和intelliJ解析桌面上的json文件。我的谷歌搜索似乎带来了其他JSON/JavaAPI,但它似乎是nashorn附带intellij,所以我宁愿尝试使用它 但是我想不出来。我试图修改一些代码(JSONParser parser=new JSONParser();),但有一个空的JSONParser声明出错。我该怎么做?我想将每个json对象保存为一个java对象(它是一个jsonobj,有两个字符串和一个数组,我想保留这个结构) 任何帮助都将不胜感激。我确实环顾了四
java
和intelliJ
解析桌面上的json
文件。我的谷歌搜索似乎带来了其他JSON
/Java
API,但它似乎是nashorn
附带intellij
,所以我宁愿尝试使用它
但是我想不出来。我试图修改一些代码(JSONParser parser=new JSONParser();
),但有一个空的JSONParser
声明出错。我该怎么做?我想将每个json
对象保存为一个java对象(它是一个json
obj,有两个字符串和一个数组,我想保留这个结构)
任何帮助都将不胜感激。我确实环顾了四周,但没有找到适合这种情况的答案。大概我仍然会使用FileReader
打开文件。我一直在使用BufferedReader
阅读每一行。我是否仍然使用带有JSON
文件的文件
谢谢,
Rebecca
Nashorn
不是一个JSON
解析器。它是一个Javascript
引擎。如果您想用Java解析JSON
字符串,有几个很好的库Gson
和Jackson
是流行的例子
要将JSON
字符串解析为Java对象(反序列化),首先需要创建相应的类型
(Java类)。当反序列化JSON
时,将此类型作为参数传递
例如,对于Gson:
Gson gson = new Gson();
MyType myobject = gson.fromJson(jsonSource, MyType.class);
为了提供比“使用其他东西”更相关的答案,Nashorn运行时与nodejs一样有JSON.parse
和JSON.stringify
。
因此,用java加载文件(因为无论如何都必须使用nashorn中的java类加载文件),一旦有了文件的字符串表示形式,就调用它script
,然后调用ScriptEngine
,调用它engine
,只需调用eval并得到如下结果:Object parsed=engine.eval(“JSON.parse(“+script+”)
和parsed
将包含解析的JSON,因为eval
返回最后一个表达式的结果
但是,这只与匿名对象一样有用,需要用Java处理。您也可以在nashorn中解析json并在nashorn中创建Java对象(或者只在nashorn中处理数据),但这需要您编写nashorn脚本
祝你好运
参考:
下面是一个使用nashorn解析JSON的工作代码示例:。它可能对ad hock脚本有用,但不建议用于生产。那么,您能解释一下nashorn中的JSONParser类的作用吗?