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-11-01Vue.js 是什么-icode9专业技术文章分享
- 2024-11-01Vue3入门教程:从零开始搭建第一个Vue3项目
- 2024-11-01详解vueRouter4基础教程
- 2024-11-01Vuex4课程:初学者的完整入门指南
- 2024-10-31Vue3课程:新手入门到初级掌握
- 2024-10-31Vue3课程:新手入门到初级应用详解
- 2024-10-31VueRouter4课程:新手入门与实战指南
- 2024-10-31Vuex4学习:从入门到初级实战教程
- 2024-10-31Vue3教程:新手入门与基础实战
- 2024-10-31Vue教程:新手快速入门指南