“Expected BEGIN_ARRAY but was BEGIN_OBJECT”:解析 JSON 解析错误
在处理 JSON 数据操作时,遇到类似“Expected BEGIN_ARRAY but was BEGIN_OBJECT”的错误是 BEGIN_OBJECT”可能会令人沮丧。为了了解原因并找到解决方案,让我们深入研究具体的错误场景:
当您尝试将 JSON 响应解析为对象数组,但实际响应是一个对象时,就会出现错误。下面的代码片段说明了这个问题:
<code class="java">Gson gson = new GsonBuilder().setDateFormat("M/d/yy hh:mm a").create(); List<Post> postsList = Arrays.asList(gson.fromJson(reader, Post[].class));</code>
这里,postsList 应该保存 Post 对象的集合,但收到的 JSON 响应只是单个 Post 对象:
<code class="json">{ "dstOffset" : 3600, "rawOffset" : 36000, "status" : "OK", "timeZoneId" : "Australia/Hobart", "timeZoneName" : "Australian Eastern Daylight Time" }</code>
要解决此不匹配问题,请修改代码以考虑单个对象结构:
<code class="java">Post post = gson.fromJson(reader, Post.class);</code>
通过将 JSON 直接转换为单个 Post 对象,您可以将数据结构与实际的 JSON 响应格式对齐,从而消除错误。
以上是'预期为 BEGIN_ARRAY 但为 BEGIN_OBJECT”:为什么我的 JSON 解析发生错误?的详细内容。更多信息请关注PHP中文网其他相关文章!