改装电话:
@GET("getUser")
Call<Map<Object,Object>> getUser(@Query("phoneNumber") String phoneNumber, @Query("hash") String hash)
我需要从浏览器中重新启动json,如果返回User对象:
{"error":"0","value":[{"id":1,"name":"","phoneNumber":"87472335578","smsCode":497797,"smsCodeDate":1475160867,"hash":"76dcc911e14f997189243f3370080e62","roles":[{"id":2,"name":"ROLE_USER"}]}]}
和json从浏览器中重新启动,如果返回错误:
{"error":"-1"}
android中的回调响应
对于这个问题
我使用Map<Object,Object>
来处理不同的JSON结构。但问题在于铸造数字。我需要int或long,而java将其视为double值。我可以使用一些解析方法。但是如果Map中存在很多变量,那将是一项糟糕的工作。
我无法使用Map<String,String>
然后解析它,因为Gson不想处理它。有反斜杠。当然,删除它们是显而易见的,但我希望找到处理JSON的优雅方式。
服务器上的json生成器代码
public final static String SUCCESS = "0";
public final static String NOT_FOUND = "-1";
Map<Object, Object> m = new HashMap<>();
@RequestMapping("/getUser")
Map<Object, Object> getUser(@RequestParam(value = "phoneNumber", defaultValue = "") String phoneNumber,
@RequestParam(value = "hash", defaultValue = "") String hash) {
m.clear();
User user = userRepository.findByPhoneNumberAndHash(phoneNumber, hash);
if (user != null) {
m.put(ERROR_JSON, SUCCESS);
m.put(VALUE_JSON, String.valueOf(user));
} else {
m.put(ERROR_JSON, NOT_FOUND);
}
return m;
}
上面的方法返回这个json:
{"error":"0","value":[{\"id\":\"1\",\"name\":\"\",\"phoneNumber\":\"87472335578\",\"smsCode\":497797,\"smsCodeDate\":1475160867,\"hash\":\"76dcc911e14f997189243f3370080e62\",\"roles\":[{\"id":2,\"name\":\"ROLE_USER\"}]}]}
答案 0 :(得分:1)
关注http://wiki.workassis.com/android-retrofit-2-1-http-client/本教程并使用以下内容作为模型类
app.get('/api/products', function(req, res) {
var query = {};
if (typeof req.query !== 'undefined' && req.query) query = req.query;
Product.find(query).populate("images", "image").exec(callback);
});
并使用
class Result{
String error;
List<Value> value;
}
class Value{
int id;
String name;
String phoneNumber;
String smsCode;
Long smsCodeDate;
String hash;
List<Roles> roles;
}
class Roles{
int id;
String name;
}