我有一个带有Angular Webfrontend的node.js应用程序和一个通过rest连接到后端的Android App。现在我不确定如何将对象从节点返回到客户端:
方式1:
res.send(req.user);
如果我这样做,我可以从角度加载用户对象:
return $http.post('/api/login', user)
.success(function (data) {
$rootScope.currentUser = data;
在我的Android应用程序中(简单的调用,我使用Spring和Gson):
user = SpringRestTemplate.getRestTemplate().postForObject(Routes.getLogin(), user, User.class);
这很好用,但我真的想从节点返回的是我的
方式2:
res.send({user: req.user });
对于角度,一切都保持不变:
$rootScope.currentUser = data.user;
但是对于android我没有找到任何其他方式而不是自己编写json转换:
ResponseEntity<Map> map = SpringRestTemplate.getRestTemplate().postForEntity(Routes.getLogin(), dUser, Map.class);
LinkedTreeMap<String, User> map2 = (LinkedTreeMap<String, User>) map.getBody();
Map ltm = (Map) map.get("user");
String id = (String) ltm.get("_id");
String userName = (String) ltm.get("userName");
// ... and so on
我知道,为什么会这样(除了为什么我必须使用第二张地图),但我想知道是否有任何更简单的方法来实现我的第二种方式。
我离开了Models和SpringRestTemplate代码,因为这是关于如何使用以下结构处理JSON的更一般的问题:
{ user : { _id: "1", userName: "foo", ...}}
非常感谢任何有关如何处理此问题的指导!
答案 0 :(得分:2)
这是简化的,但这将解决您的问题。
选项B: 使用GSON从弹簧中将对象反序列化为POJO。但我建议使用Retrofit或类似的东西,因为它更简单,更清洁。