java - 尝试读取 url 处的 json 文件

标签 java

我有这个java文件:

package foo;

import java.net.*;
import java.io.*;
import org.json.simple.*;


class JsonObject {
  String foo;
}

public class Bar {

    public static void main(String[] args){

        URL url = new URL("https://raw.githubusercontent.com/oresoftware/oredoc/master/test/builds/java/one/test.json");
        try (InputStream is = url.openStream();
        JsonReader rdr = Json.createReader(is)) {

                 JsonObject obj = rdr.readObject();
                 JsonArray results = obj.getJsonArray("data");
                 for (JsonObject result : results.getValuesAs(JsonObject.class)) {
                       System.out.print(result.getJsonObject("from").getString("name"));
                       System.out.println(result.getString("message", ""));

                     }
             }

    }
}

我从这里借用了代码: https://www.oracle.com/technetwork/articles/java/json-1973242.html

我只是尝试从给定的 url 中读取 json 数组(该 url 是实时且有效的,只需放入浏览器中即可查看)。

我相信 org.json.simple.* 的 jar 文件位于此处:

我尝试在没有 Maven 的情况下构建,它工作正常,直到我尝试导入 org.json.simple jar:

#!/usr/bin/env bash

dir="$(dirname ${BASH_SOURCE})";
export CLASSPATH="${CLASSPATH}:$dir/foo/java-json.jar"

javac "$dir/foo/"*.java

jar -c -m "$dir/foo/manifest.mf" -f foo.jar "$dir/foo/"*.class

java -jar "$dir/foo.jar"

我唯一的猜测是我错误地使用了 CLASSPATH 环境变量,但我收到了此错误:

./test/builds/java/one/foo/Bar.java:5: error: package org.json.simple does not exist
import org.json.simple.*;
^
./test/builds/java/one/foo/Bar.java:22: error: cannot find symbol
       JsonReader rdr = Json.createReader(is)) {
       ^
  symbol:   class JsonReader
  location: class Bar
./test/builds/java/one/foo/Bar.java:22: error: cannot find symbol
       JsonReader rdr = Json.createReader(is)) {
                        ^
  symbol:   variable Json
  location: class Bar
./test/builds/java/one/foo/Bar.java:25: error: cannot find symbol
                 JsonArray results = obj.getJsonArray("data");
                 ^
  symbol:   class JsonArray
  location: class Bar
./test/builds/java/one/foo/Bar.java:25: error: cannot find symbol
                 JsonArray results = obj.getJsonArray("data");
                                        ^
  symbol:   method getJsonArray(String)
  location: variable obj of type JsonObject
./test/builds/java/one/foo/Bar.java:27: error: cannot find symbol
                         System.out.print(result.getJsonObject("from").getString("name"));
                                                ^
  symbol:   method getJsonObject(String)
  location: variable result of type JsonObject
./test/builds/java/one/foo/Bar.java:29: error: cannot find symbol
                         System.out.println(result.getString("message", ""));
                                                  ^
  symbol:   method getString(String,String)
  location: variable result of type JsonObject
7 errors

第一行说 org.json.simple 包不存在,那么我是否应该告诉 java 命令有关该 jar 文件的信息?据我所知,CLASSPATH 环境变量是正确的!

最佳答案

正如您所说,问题是软件包不存在。

  1. 将 org.json.simple 包移动到编译后的 jar 文件夹中。
  2. 运行 jar。

关于java - 尝试读取 url 处的 json 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53387438/

相关文章:

java - 在 Java 中对图像应用描边

java - @RelatedTo(elementClass = Concept.class)RelatedTo.elementClass 必须是类升

java - 如何为 JTable 中的一列添加不同的单元格编辑器?

java - 正则表达式从字符串中删除圆括号

java - Eclipse M2E/变更单和导出

Java Spring : Content type 'multipart/form-data;boundary ;charset=UTF-8' not supported

java - 如何为这个 Controller 编写JUnit?

java - Eclipse:搜索 Java 类注释等中的文本

java - 使用 .pem 文件在 java 中发送 https 请求

java - 当需要 Scala 的列表时,使用 java.util.List 从 Java 调用 Scala 代码