改造電話:你使用什麼技術來處理不同的JSON結構?
@GET("getUser")
Call<Map<Object,Object>> getUser(@Query("phoneNumber") String phoneNumber, @Query("hash") String hash)
我需要從瀏覽器的JSON resut,如果回報用戶對象:從瀏覽器
{"error":"0","value":[{"id":1,"name":"","phoneNumber":"87472335578","smsCode":497797,"smsCodeDate":1475160867,"hash":"76dcc911e14f997189243f3370080e62","roles":[{"id":2,"name":"ROLE_USER"}]}]}
和JSON resut,如果返回錯誤:
{"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\"}]}]}
檢查本教程http://wiki.workassis.com/android-retrofit-2-1-http-client/ –