【问题标题】:Gson “fromJson” [closed]Gson“fromJson”[关闭]
【发布时间】:2021-04-09 08:06:33
【问题描述】:

Gson.fromJson(“some/url/path”, String.class) 抛出 MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON。为什么 gson 将 url 字符串视为 Json 而不是 Gson.fromJson(“simpleString”, String.class) 工作正常。不应该把 url 也当成字符串吗?

【问题讨论】:

  • 我建议在调试器中单步执行代码以查看究竟是什么导致了异常 - 也许它们采用不同的代码路径/重载?
  • 我很惊讶simpleString 没有被视为格式错误。根据docs应该是无效的。
  • 是什么让您认为字符串参数被视为 URL? fromJson(String, Class) 的文档非常清楚地指定 字符串值是 JSON 文本本身。由于some/url/path 不是有效的 JSON,它当然会被拒绝!

标签: java gson


【解决方案1】:

这两个例子都是错误的,但 Gson 做了一些简单的猜测。

如果你的 JSON 对象是一个字符串,它应该被引用。

System.out.println(gson.fromJson("\"http://some/string\"", String.class));

工作正常。

如果 JSON 字符串没有被引用,它只能与单个字母数字序列一起使用,即使是斜线也会破坏 Gson 对类型的猜测。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多