try{
JsonElement rawJson =
GsonUtils.JsonParser.parse(new InputStreamReader(
new URL("http://api.mineplex.com/pc/player/abc?apiKey=1")
.openConnection().getInputStream()));
}catch(JsonIOException | JsonSyntaxException | IOException e){
e.printStackTrace();
}
和
public class GsonUtils
{
public static Gson gson = new Gson();
public static Gson prettyGson = new GsonBuilder().setPrettyPrinting()
.create();
public static JsonParser jsonParser = new JsonParser();
}
是我用来获取JSON并对其进行解析的类。但是当我运行第一个时,它会报告以下堆栈跟踪:
com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 2 column 2
at com.google.gson.JsonParser.parse(JsonParser.java:65)
...
Caused by: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 2 column 2
at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1505)
at com.google.gson.stream.JsonReader.checkLenient(JsonReader.java:1386)
at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:531)
at com.google.gson.stream.JsonReader.peek(JsonReader.java:414)
at com.google.gson.JsonParser.parse(JsonParser.java:60)
... 13 more
它告诉我添加JsonReader。将lenient(true)设置为我的代码,但我的代码不使用JsonReader。那么如何将setLenient(true)添加到代码中?
编辑:添加API响应(格式化):
{
"statusCode": 401,
"error": "Unauthorized",
"message": "Invalid API Key. To get an api key use the /api command in game"
}
我想你可能把GSON库的使用复杂化了。以下代码片段在IntelliJ中对我本地工作正常:
Gson gson = new Gson();
String input = "{\"statusCode\": 401, error\": \"Unauthorized\", \"message\": \"Invalid API Key. To get an api key use the /api command in game\"}";
JsonElement json = gson.fromJson(input, JsonElement.class);
System.out.println(json.toString());
这里我使用了Gson的重载版本。fromJson()接受字符串,但也有一个版本接受文件读取器。
在您的情况下,您可以尝试以下方法:
JsonReader reader = new JsonReader(new InputStreamReader(
new URL("http://api.mineplex.com/pc/player/abc?apiKey=1")
.openConnection().getInputStream()));
JsonElement json = gson.fromJson(reader, JsonElement.class);
// use your JsonElement here
如何使用GSON解析这个json? 我的代码: 我的stacktrace com.google.gson.JsonSyn出租车异常:java.lang.IllegalStateExctive:预期BEGIN_OBJECT但BEGIN_ARRAY在第1行第2列路径$com.google.gson.internal.bind.ReflecteTypeAdapterFactory$Adapter.rea
我很难将具有可变内容的JSON对象解析为Java对象。 我的JSON如下所示: 通过一个典型的Json到Java对象转换器运行这段代码是不起作用的,因为它不能映射到一个简单的POJO。 我尝试转换为,但不出所料,出现了一个异常: Edit:正如注释中所指出的,提供的JSON数据不是以有效的键值对形式提供的。我已经联系了API提供商,他们会解决这个问题的。 在我找到一个处理这个问题的方法之前,我将保
问题内容: 我在解析从javascript获取的JSON时遇到问题。JSON的格式是这样的: 到目前为止,我已经能够做到这一点: 但是我现在还需要用这些位置创建一个类。我一直在上课,因为我先尝试打印输出,但是我无法进一步细分它。我收到此错误消息: java.lang.IllegalStateException:这不是JSON数组。 我的代码是这样的: 我也尝试过这种方式: 在这种情况下,我得到:
我正在使用凌空OkHttp从服务器获取一些数据。 响应是一个包含JSON的字符串,我想使用GSON/POJO解析它。 我得到错误: 预期BEGIN_OBJECT,但在第1行第1列路径$上是STRING 尝试解析时。 原因:java.lang.IllegalStateException:预期BEGIN_OBJECT但在第1行第1列路径$ com.google.gson.stream.JsonRead
问题内容: 但是我无法从中得到答案。上面链接的答案: 它运作良好,但我想对泛型使用隐式运算符。见下文: 然后,我尝试将Class参数传递给方法: 然后出现一个错误: 谁能告诉我为什么会出现此错误?TypeToken类不支持隐式运算符吗? 问题答案: 您可以这样: