java - 试图在 url 读取 json 文件
问题描述
我有这个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 env var 是正确的!
解决方案
正如你所说,这个问题是包不存在。
- 将 org.json.simple 包移动到已编译的 jar 文件夹中。
- 运行罐子。
推荐阅读
- json - Oracle 使用 json_query 读取 JSON 数据
- excel - 通过匹配第一个元素来对齐表格行
- android - 在中心显示回收站中的最后一项
- python - 如何使用子进程获取终端错误信息?
- android - 位图到 base64 编码不起作用。损坏的图像。此外,从服务器抛出错误“Base-64 字符数组或字符串的长度无效”
- c# - C#插入与主键具有相同值的外键
- javascript - 猫鼬中的用户、帖子和评论模型
- cadence-workflow - 是否有一种机制可以立即向工作流发出有关异步活动失败/超时的信号
- javascript - 我怎样才能从数组中获得最高的最低和中等值..?
- php - 如何在 PHP 中添加具有数字值的字符串