gpt4 book ai didi

java - JSONTokener : A JSONObject text must begin with '{'

转载 作者:行者123 更新时间:2023-12-02 13:00:17 29 4
gpt4 key购买 nike

在下面的代码中,在 URI 上使用 JSON 时遇到异常

public static String processRestResponse(String language){
URI uri = null;
JSONTokener tokener = null;
try {
uri = new URI("https://api.github.com/search/repositories?q=language:Java");
URL url = uri.toURL();
InputStream inputStream = url.openStream();
tokener = new JSONTokener(inputStream.toString());
JSONObject root = new JSONObject(tokener);
} catch (Exception e) {
e.printStackTrace();
}

异常如下...

org.json.JSONException: A JSONObject text must begin with '{' at character 1
at org.json.JSONTokener.syntaxError(JSONTokener.java:410)
at org.json.JSONObject.<init>(JSONObject.java:179)
at Assignment1.processRestResponse(Assignment1.java:48)
at Assignment1.main(Assignment1.java:108)

我可以采取其他适合的替代方法吗?

最佳答案

确保使用正确的字符集正确读取InputStream,例如如下所示:

StringBuilder textBuilder = new StringBuilder();
try (Reader reader = new BufferedReader(new InputStreamReader(inputStream, Charset.forName(StandardCharsets.UTF_8.name())))) {
int c = 0;
while ((c = reader.read()) != -1) {
textBuilder.append((char) c);
}
}

之后你就可以使用它了:

tokener = new JSONTokener(textBuilder.toString());
JSONObject root = new JSONObject(tokener);

关于java - JSONTokener : A JSONObject text must begin with '{' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44325416/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com