【问题标题】:Gson Malformed Exception via parse通过解析的 Gson 格式错误的异常
【发布时间】:2020-11-03 03:32:48
【问题描述】:

您好,我的服务将解析 Json。但我有畸形的异常。 下面是我的代码;

 Object listOfGroups = sthService.getSthList();
    
    Gson gson = new Gson();
    
    JsonArray jsonArray = gson.fromJson(listOfGroups.toString(), JsonObject.class)
         .getAsJsonArray("memberNameList");
    
    List<String> myId = gson.fromJson(jsonArray, new TypeToken<ArrayList<String>>()) {
    }.getType();
    
      for(JsonElement element : JsonArray) {
    
        Json jsonObject = element.getAsJsonObject();
    
        String sthIndicator = jsonObject.get("readInd").getAsString();
    
        if (sthIndicator.equalsIgnoreCase("Y")) {
    
         String itemId = jsonObject.get("itemId").getAsString();
         myId.add(itemId);
      }
    }

【问题讨论】:

  • listOfGroups.toString() 返回什么?
  • 返回一个对象值
  • 您能否在您的问题中添加该值? Gson 无法解析您的“对象值”。因此,我们需要对其进行检查以了解问题所在。
  • Alexy 谢谢你的回答,但它只是对象值,没有别的。
  • 你能发布完整的异常,所以我们至少知道哪一行失败了......

标签: java json spring-boot spring-mvc gson


【解决方案1】:

如果 Gson 可能由于数据类型不匹配而无法将接收到的 JSON 字符串与您的 JsonObject.class 进行映射,则 Gson 会为您提供此异常。

要么验证每个属性的数据类型,要么 使用 ObjectMapper 而不是使用 Gson。 无论您的数据类型如何,ObjectMapper 都会处理 Json 字符串

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-17
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 2017-04-12
  • 1970-01-01
相关资源
最近更新 更多