首页  >  文章  >  Java  >  \“预期为 BEGIN_ARRAY 但为 BEGIN_OBJECT\”:为什么我的 JSON 解析发生错误?

\“预期为 BEGIN_ARRAY 但为 BEGIN_OBJECT\”:为什么我的 JSON 解析发生错误?

DDD
DDD原创
2024-10-27 04:40:29893浏览

“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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn