【问题标题】:Jackson JSON Exception杰克逊 JSON 异常
【发布时间】:2012-05-21 19:00:55
【问题描述】:

我写了以下内容:

ObjectMapper oMapper = new ObjectMapper();
Object oPOJO = null;

String p_strJSON = "{\"name\" : { \"first\" : \"Joe\", \"last\" : "
    + "\"Sixpack\" },\"gender\" : \"MALE\",\"verified\" : \"false\","
    + "\"userImage\" : \"Rm9vYmFyIQ==\"}";

try
{
    oPOJO = oMapper.readValue(p_strJSON, User.class);
}
catch(Throwable oThrowable)
{
    System.out.println(oThrowable.getMessage());

    throw new RuntimeException(oThrowable);
}

并且在执行时收到以下异常消息:

无法从 [Source: java.io.StringReader@3eca90; 的 START_OBJECT 令牌中反序列化 java.lang.String 的实例;行:1,列:1]

我是否错误地使用了 Jackson?我正在使用 1.9.6 JAR - 我是否需要在 claspath 中设置任何内容?

【问题讨论】:

  • 你的 p_clsType 类是什么?
  • 很抱歉 - 现在可以使用示例了
  • 您在用户中的名称对象是否定义为字符串一个“名称”对象
  • 如果没有实现 User 类,很难说。您的示例来自此 Jackson in 5 minutes 页面。您的用户与那里的用户相同吗?
  • 缺少用户对象使这个问题变得毫无价值,并且无法以有用的方式回答。

标签: java json jackson


【解决方案1】:

鉴于您的用户类看起来像这样,您的代码通过了

public class User {
  private Name name;
  private String gender;
  private boolean verified;
  private String userImage;

  // getter and setter
}

public class Name {
  private String first;
  private String last;

  // getter and setter
}

【讨论】:

  • 谢谢@Joey!只是出于好奇,为什么 name 必须是 Name 实例?我把它当作一个字符串...
  • 因为当杰克逊看到一个“{”时,它就是一个对象的开始。尝试在此处可视化 JSON,例如 jsonformatter.curiousconcept.comjsonviewer.stack.hu
猜你喜欢
  • 2013-12-29
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 2012-11-15
  • 1970-01-01
  • 2015-01-24
  • 2019-05-19
  • 1970-01-01
相关资源
最近更新 更多