Json数据交互
2022/2/27 6:21:32
本文主要是介绍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; }
这篇关于Json数据交互的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-21Vue3教程:新手入门到实践应用
- 2024-12-21VueRouter4教程:从入门到实践
- 2024-12-20Vue3项目实战:从入门到上手
- 2024-12-20Vue3项目实战:新手入门教程
- 2024-12-20VueRouter4项目实战:新手入门教程
- 2024-12-20如何实现JDBC和jsp的关系?-icode9专业技术文章分享
- 2024-12-20Vue项目中实现TagsView标签栏导航的简单教程
- 2024-12-20Vue3入门教程:从零开始搭建你的第一个Vue3项目
- 2024-12-20从零开始学习vueRouter4:基础教程
- 2024-12-20Vuex4课程:新手入门到上手实战全攻略