java nashorn 从文件中解析 json

java nashorn parse json from file

我正在尝试使用 javaintelliJ 解析桌面上的 json 文件。我做的谷歌搜索似乎带来了其他 JSON/Java API,但似乎 nashorn 带有 intellij,所以我宁愿尝试使用那。

不过我想不通。我尝试修改一些代码 (JSONParser parser = new JSONParser();),但空 JSONParser 声明出错。我该怎么做?我想将每个 json 对象保存为一个 java 对象(它是一个 JSON 带有 2 个字符串和一个数组的对象,我想保留这个结构)。

如有任何帮助,我们将不胜感激。我确实环顾四周,但找不到适合这种情况的答案。大概我仍然会使用 FileReader 打开文件。我一直在使用 BufferedReader 来阅读每一行。我是否仍然使用那些带有 JSON 个文件的文件?

谢谢, 丽贝卡

Nashorn 不是 JSON 解析器。这是一个 Javascript 引擎。如果你想用 Java 解析 JSON 字符串,有几个很好的库。 GsonJackson 是流行的例子。

要将JSON字符串解析为Java对象(反序列化),首先需要创建合适的type(Javaclass) .当您反序列化 JSON.

时,您将此 type 作为参数传递

例如,使用 Gson:

Gson gson = new Gson();
MyType myobject = gson.fromJson(jsonSource, MyType.class);

为了提供比“使用其他东西”更相关的答案,Nashorn 运行时有 JSON.parseJSON.stringify,就像 nodejs 一样。 因此,在 java 中加载文件(因为无论如何你都必须在 nashorn 中使用 java 类 加载文件),一旦你有了文件的字符串表示,就将其称为 scriptScriptEngine 的实例,称之为 engine,只需调用 eval 并得到如下结果:Object parsed = engine.eval("JSON.parse("+script+")";)parsed 将包含已解析的 json, 因为 eval returns 最后一个表达式的结果

然而,这仅与匿名 Object 一样有用,并且需要在 Java 中处理。你也可以解析nashorn中的json,在nashorn中创建一个java对象(或者只是处理nashorn中的数据),但这需要你写一个nashorn脚本。

祝你好运!

参考:

ScriptEngine JavaDoc

A good nashorn tutorial

Reading a file in Java