Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaNashorn从文件解析json_Java_Json_Intellij Idea_Nashorn - Fatal编程技术网

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类的作用吗?