java - 在Android中使用restTemplate.getForObject反序列化JSON对象的正确方法
问题描述
我正在尝试将 JSON 对象从 Java 反序列化回 android 类。如果我使用 getForObject(url,String.class) 该方法返回一个值,但是如果我使用 getForObject(url,Info.class) 反序列化为一个对象,调试器会崩溃并且甚至不会到达 catch 块。我错过了什么吗?
private class HttpRequestTask extends AsyncTask<Void, Void, Info> {
@Override
protected Info doInBackground(Void... params) {
try {
String url = "http://192.168.1.101:8080/sandbox/android";
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
// works
///String result = restTemplate.getForObject(url, String.class);
//Log.d("Main",result); // {"id":"1","content":null,"name":"Tommy","number":"6666","email":"abd@zyxo.com"}
// Info crashes
Info info2 = restTemplate.getForObject(url, Info.class);
Log.d("Main","succes");
} catch (Exception e) {
Log.e("MainActivity", e.getMessage(), e);
}
return null;
}
解决方案
找到了! Caused by: java.lang.NoClassDefFoundError: java.nio.file.Path
. 看起来我必须配置我的 gradle 多一点
来自(Android 上的 NoClassDefFoundError)您正在尝试使用 java.nio.file.Paths,据我所知,它在 Android 中不存在。(仅支持 Java 7 API 的某些部分。)
现在我很困惑:S
使用
implementation 'org.springframework.android:spring-android-rest-template:2.0.0.M3'
implementation 'org.springframework.android:spring-android-core:2.0.0.M3'
implementation 'com.fasterxml.jackson.core:jackson-databind:2.10.0.pr3'
[编辑]发现它是杰克逊问题https://github.com/FasterXML/jackson-databind/issues/2466 [/edit]
推荐阅读
- angular - Angular/cli 不会在 Dart-Sass 中运行我的 ng serve 并出现错误
- flutter - Flutter 相当于 Sencha 的 NestedList?
- android - 如何在存储库中初始化 okHttp 的 MockServer()?
- dart - 以阿拉伯语格式显示数字 Dart
- pyomo - 从 IPOPT 求解器获取:CPU 时间、#iterations 、目标函数的值并将它们保存在 Pyomo 上的向量中
- mongodb - Mongodb按字符串数组排序并使用索引
- git - 如何将我的分支继承的基本提交移动为当前分支中的第一个提交?
- python - FileNotFoundError:[Errno 2] 没有这样的文件或目录:'/home/ubicomp/ubicomp/questions_check'。(将文件放入 SFTP 服务器。)
- git - 如何在 SourceTree 中禁止空提交?
- android - 如何删除工具栏中的设置?