有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java内置JSON解析器

我一直在做一项任务,需要发出请求并获取JSON中特定键的值。由于一些限制/复杂性,我假设只使用内置的Java库

对于发出请求,我使用了HttpURLConnection,但是对于解析JSON,我找不到。你能告诉我Java内置JSON解析器吗

我发现了类似的问题here,但这并没有令人满意的答案,而且很旧,因此再次询问,以防万一,这在最新版本的Java中可用


共 (3) 个答案

  1. # 2 楼答案

    您可以在Java8中使用内置的Nashorn引擎

    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    import java.util.Map;
    import javax.script.ScriptEngine;
    import javax.script.ScriptEngineManager;
    import javax.script.ScriptException;
    
    public class JSONParsingTest {
    
        private ScriptEngine engine;
    
        @Before
        public void initEngine() {
            ScriptEngineManager sem = new ScriptEngineManager();
            this.engine = sem.getEngineByName("javascript");
        }
    
        @Test
        public void parseJson() throws IOException, ScriptException {
            String json = new String(Files.readAllBytes(/*path*/);
            String script = "Java.asJSONCompatible(" + json + ")";
            Object result = this.engine.eval(script);
            assertThat(result, instanceOf(Map.class));
            Map contents = (Map) result;
            contents.forEach((t, u) -> {
            //key-value pairs
            });
        }
    }
    

    资料来源:Converting JSON To Map With Java 8 Without Dependencies

    免责声明:Nashorn将很快被弃用

    更新:Nashorn已从Java 15中删除

  2. # 3 楼答案

    Java中没有这样的库。但是如果使用maven,可以添加GSONJSON-lib依赖项