【发布时间】:2020-07-07 09:50:51
【问题描述】:
我需要将内部 json 提取为字符串。使用 Gson。它失败了。
public class PagenatedJSON {
@SerializedName("content")
@Expose
private List<String> content;
@SerializedName("totalPages")
@Expose
private Long totalPages;
@SerializedName("number")
@Expose
private Long number; // num of page
}
因此,存在复杂的未知内部类“内容”。我需要把它作为字符串。所以它不需要任何解析。但是 gson 尝试这样做:com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 14 path $.content[0]
如何忽略内部解析?
【问题讨论】:
-
您应该将实际的 JSON 添加到您的问题中。
-
根据什么规则,您希望将内部 JSON 结构作为字符串?没有默认行为!
-
为此,发送 JSON 的客户端需要对其进行相应的格式化。您目前可能拥有的是:{'content':{...}}。相反,客户端应该发送的内容是:{'content':"{...}"}。
-
@RealSkeptic,为什么?它必须通过通用解决方案与任何数据一起使用。
-
JSON 文件旨在表示对象、数组和其中元素的层次结构。如果意图是元素之一是字符串而不是对象,则不应将其表示为 JSON 中的对象,而应表示为字符串。更改 JSON 的逻辑是可能的,但不,这不是常见的事情,也没有简单的解决方案。如果您有一个 错误表示数据的 JSON,那么您必须编写自定义代码来解析它。