如何使用普通Java代码读取JSON字符串(不使用任何Jar文件)

时间:2019-04-28 09:45:53

标签: java json

在Java中,有很多读取JSON字符串的方法,但是我要寻找的是不使用任何Jar文件,是否有使用核心Java函数或书面脚本读取JSON纯字符串的方法。

例如,一种方法,该方法返回通过两个参数发送的键的值 1-JSON字符串 2-我们需要查找并返回值的键或JSON定位符(例如accountname.id)

我编写了一个可以解决我的问题但不能完全解决问题的代码

public static String GetJSONValue(String JSONString, String Field)
{
       return JSONString.substring(JSONString.indexOf(Field), JSONString.indexOf("\n", JSONString.indexOf(Field))).replace(Field+"\": \"", "").replace("\"", "").replace(",","");   
}

上面的代码有很多限制...加上它应该覆盖JSON数组并支持JSON定位符?

1 个答案:

答案 0 :(得分:1)

如果您坚定不移地决定不使用jar库来解析JSON,则需要编写某种解析器。这可能是很多工作。但是,在线提供了解析器形式的解决方案(例如Antlr或javacc等)。 大多数(但不是全部)解析器要求将Jar库与您的应用程序一起分发。 Javacc并非如此。

javacc是代码生成器(即,它生成Java代码),该代码生成器(从源文件)被编译到您的应用程序中。 Javacc提取一个语法文件,并从该语法文件生成相应的Java代码。然后,您可以按照常规方式将应用程序与生成的Java文件一起编译。

您可以在此处获得javacc(它下载jar文件,但这些文件不构成您的应用程序的一部分),并且可以配置为从命令行运行或作为IDE中的插件运行:

https://javacc.org/

一些JSON语法可以在这里找到:

https://github.com/RobertFischer/json-parser/tree/master/src/main/javacc/com/smokejumperit/json/parser

和/或

https://github.com/mwnorman/JSONParser/tree/master/src/org/mwnorman/json

所需文件的扩展名为* .jj(和* .jjt)。第二个语法示例显示了生成的源的类型。