Json数据交互
作者:互联网
Json数据格式
JSON(JavaScript Object Notation,js对象标记),是一种轻量级的数据交换格式。
对象格式:
对象的属性也可以是对象,数组
{
“key”:"value",
"name":"zhangsan",
"age":30,
"company":{
"city":"南京",
"Company_name":"xxxxxxx",
"position":"manager"
},
"friends":["lisi","wangwu","zhaoliu"]
}
对象数组:
[{"name":"zhangsan","age":30},
{"name":"lisi","age":42},
{"name":"wangwu","age":57}]
Json数据传递:
@RequestMapping:指定请求的URL
@RequestBody:在方法的形参中,将请求体中的数据绑定到形参上
@RespsonseBody:作用在方法上,将方法的返回结果直接写进HTTP Response Body里。一般情况下,@ResponseBody都会在异步获取数据时使用,被标注的方法返回的数据都将输出到响应流中。
遇到的错误
Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported]
错误代码:
Android客户端:
String u_name = username.getText().toString();
String u_pwd = password.getText().toString();
User user = new User(u_name, u_pwd);
Gson gson = new Gson();
String json = gson.toJson(user);
RequestBody requestBody = new FormBody.Builder()
.add("user", json)
.build();
服务端:
public UserData register(@RequestBody User user){
…… ……
}
客户端是把json对象放进了方法体中,理论上可以改成(@RequestParam Json user)(还没经过试验是否可行),改成(@RequestParam User user)是不可行的,这时候会报错无法转换。
正确代码如下,使用OKHTTP
String u_name = username.getText().toString();
String u_pwd = password.getText().toString();
User user = new User(u_name, u_pwd);
Gson gson = new Gson();
String json = gson.toJson(user);
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"),json);
Json数据转换(使用Gson)
对象转换成json数据
User user = new User(u_name, u_pwd);
Gson gson = new Gson();
String json = gson.toJson(user);
json数据转换成对象
private User parseJsonWithGson(String jsonData){
Gson gson=new Gson();
User user=gson.fromJson(jsonData,User.class);
return user;
}
List集合转换成json数据
Gson gson=new Gson();
String gs=gson.toJson(list);
json数据转换成List集合
private List<User> parseJsonWithGson(String jsonData){
Gson gson=new Gson();
List<User> users=gson.fromJson(jsonData,new TypeToken<ArrayList<User>>(){}.getType());
// Log.d("users",users.toString());
return users;
}
map集合转换成json数据
Gson gson=new Gson();
String gs=gson.toJson(map);
json数据转换成map集合
private Map<String,Object> parseJsonWithGson(String jsonData){
Gson gson=new Gson();
Map<String,Object> m=gson.fromJson(jsonData,new TypeToken<HashMap<String,Object>>(){}.getType());
return m;
}
标签:String,交互,json,gson,Json,user,new,数据,Gson 来源: https://www.cnblogs.com/onee123/p/15941397.html