java - JsonMappingException : Can not construct instance of. .. android studio中的rest API

标签 java json android-studio jackson

我正在尝试实现 global magnet API在 Android 应用程序中。我做了一个rest API get请求并将json API数据放在 string 中(该字符串称为 dataString 。该字符串如下所示:

{
  declination: {
  units: "Deg",
  value: -4.8235602378845215
  },
  inclination: {
  units: "Deg",
  value: -30.085556030273438
  },
  total_intensity: {
  units: "nT",
  value: 31945.123046875
  }
}

我现在正在尝试将此字符串反序列化为一个对象。我开设了以下类(class):

    public class MagneticData {
        @JsonProperty("declination")
        public MagneticDataElement declination;
        @JsonProperty("grid_variation")
        public MagneticDataElement grid_variation;
        @JsonProperty("inclination")
        public MagneticDataElement inclination;
        @JsonProperty("total_intensity")
        public MagneticDataElement total_intensity;
    }

    public class MagneticDataElement {
        @JsonProperty("units")
        public String units;
        @JsonProperty("value")
        public double value;
    }

我现在使用 ObjectMapper.readValue()函数来转换 dataStringMagneticData 类型的对象但我收到以下错误:

com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of com.mobcom.apitest.MainActivity$MagneticData: no suitable constructor found, can not deserialize from Object value (missing default constructor or creator, or perhaps need to add/enable type information?)

我做错了什么?

最佳答案

我使用修改后的 JSON 字符串测试了您的代码,并将 toString() 添加到您的 POJO,一切正常,如下所示,因此您可能必须提供更多信息以进行调试,例如如何反序列化它以及您使用的 Jackson 库版本。

修改后的 JSON 字符串

{
  "declination": {
    "units": "Deg",
    "value": -4.8235602378845215
  },
  "inclination": {
    "units": "Deg",
    "value": -30.085556030273438
  },
  "total_intensity": {
    "units": "nT",
    "value": 31945.123046875
  }
}

代码片段

ObjectMapper mapper = new ObjectMapper();
MagneticData magneticData = mapper.readValue(jsonStr, MagneticData.class);
System.out.println(magneticData.toString());

控制台输出

MagneticData [declination=MagneticDataElement [units=Deg, value=-4.8235602378845215], inclination=MagneticDataElement [units=Deg, value=-30.085556030273438], total_intensity=MagneticDataElement [units=nT, value=31945.123046875]]

关于java - JsonMappingException : Can not construct instance of. .. android studio中的rest API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59144763/

相关文章:

java - 如何从 HashMap 列表中获取值?

iphone - 使用 JSON 将 NSDictionary 保存到 MySQL

python - Flask-Restful - 返回带有嵌套数组的 json

android-studio - 如何在 Android Studio 2.0 中启用字体连字?

android-studio - 如何使用Kotlin安全地强制转换readLine()的结果以防止类型不匹配

java - JBoss 6.4 中类加载的顺序 : Is WEB-INF/classes or modules loaded first?

java - 对于参数类型 void、void,运算符 > 未定义

java - 尝试在 Java 中将 JSON 解析为 String

android - 在某些设备上完成 Android 的应用内灵活更新过程后,应用不会自动重启

java - 显示同一类方法的弃用警告