CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛

json 类型不确定(新鲜出炉)json 类型自动转换,几种常见的Json工具包,免费源码交易平台,

1.复杂json转对象

概述作为 面向对象 开发的程序员,每天的业务代码会遇到大量的 Json 处理本文从最常见的几个类库 gson, fastjson, jackson 进行基本操作, 仅作记录基础准备首先创建 java 对象用于测试。

2.json数据类型转换

角色/** * @author 当我遇上你 * @公众号 当我遇上你 * @since 2020-06-10 */ @Data @NoArgsConstructor @AllArgsConstructor public class Role { private String roleName; }

3.json转化为指定的类

这里我们创建一个复合嵌套对象 user/** * @author 当我遇上你 * @公众号 当我遇上你 * @since 2020-06-10 */ @Data public class User { private String userName; private List roles; }

4.不满足json格式

用户组/** * @author 当我遇上你 * @公众号 当我遇上你 * @since 2020-06-11 */ @Data public class UserGroup implements Serializable { private String groupName; private Map idNumber; }

5.json不支持的数据格式

菜单/** * @author 当我遇上你 * @公众号 当我遇上你 * @since 2020-06-10 */ @Data @AllArgsConstructor public class Menu { @SerializedName(“menu_name”) private String menuName; }

6.json转换成对象有哪几种方法

部门/** * @author 当我遇上你 * @公众号 当我遇上你 * @since 2020-06-11 */ @Data @AllArgsConstructor public class Dept { private String deptName; }

7.json转json对象

类型适配器/** * @author 当我遇上你 * @公众号 当我遇上你 * @since 2020-06-11 */ public class DeptAdapter implements JsonSerializer { @Override public JsonElement serialize(Dept dept, Type type, JsonSerializationContext jsonSerializationContext) { JsonObject deptObject = new JsonObject(); deptObject.addProperty(“dept_name”, dept.getDeptName()); return deptObject; } }

8.json转对象只要指定属性

Gsonmaven 依赖 com.google.code.gson gson

9.json数据格式不正确

单元测试/** * @author 当我遇上你 * @公众号 当我遇上你 * @since 2020-06-10 */ class GsonTest { /** * {“userName”:”admin”,”roles”:[{“roleName”:”系统管理员”},{“roleName”:”普通管理员”}]} */ @Test void toJson() { Role role1 = new Role(“系统管理员”); Role role2 = new Role(“普通管理员”); User user = new User(); user.setUserName(“admin”); user.setRoles(Arrays.asList(role1, role2)); // 对象转json String json = new Gson().toJson(user); System.out.println(json); } /** * {“userName”:”admin”,”roles”:[{“roleName”:”系统管理员”},{“roleName”:”普通管理员”}]} */ @Test void toJson2() { Role role1 = new Role(“系统管理员”); Role role2 = new Role(“普通管理员”); User user = new User(); user.setUserName(“admin”); user.setRoles(Arrays.asList(role1, role2)); String json = new GsonBuilder().create().toJson(user); System.out.println(json); } /** * User(userName=admin, roles=[Role(roleName=系统管理员), Role(roleName=普通管理员)]) */ @Test void fromJson() { String json = “{\”userName\”:\”admin\”,\”roles\”:[{\”roleName\”:\”系统管理员\”},{\”roleName\”:\”普通管理员\”}]}”; User user = new Gson().fromJson(json, User.class); System.out.println(user); } /** * admin * {“userName”:”admin”,”roles”:{“roleName”:”超级管理员”}} */ @Test void createJsonObject() { JsonObject role = new JsonObject(); role.addProperty(“roleName”, “超级管理员”); JsonObject user = new JsonObject(); user.addProperty(“userName”, “admin”); user.add(“roles”, role); String username = user.get(“userName”).getAsString(); System.out.println(username); System.out.println(user); } /** * admin */ @Test void json2Object() { String json = “{\”userName\”:\”admin\”,\”roles\”:[{\”roleName\”:\”系统管理员\”},{\”roleName\”:\”普通管理员\”}]}”; JsonObject jsonObject = JsonParser.parseString(json).getAsJsonObject(); String userName = jsonObject.get(“userName”).getAsString(); System.out.println(userName); } /** * [{“roleName”:”系统管理员”},{“roleName”:”普通管理员”}] */ @Test void list2Json() { Role role1 = new Role(“系统管理员”); Role role2 = new Role(“普通管理员”); String json = new Gson().toJson(Arrays.asList(role1, role2)); System.out.println(json); } /** * [Role(roleName=系统管理员), Role(roleName=普通管理员)] */ @Test void json2List() { String json = “[{\”roleName\”:\”系统管理员\”},{\”roleName\”:\”普通管理员\”}]”; List roles = new Gson().fromJson(json, new TypeToken() {}.getType()); System.out.println(roles); } /** * [{“roleName”:”系统管理员”},{“roleName”:”普通管理员”}] */ @Test void json2Array() { String json = “[{\”roleName\”:\”系统管理员\”},{\”roleName\”:\”普通管理员\”}]”; JsonArray jsonArray = JsonParser.parseString(json).getAsJsonArray(); System.out.println(jsonArray); } /** * {“userName”:”admin”} */ @Test void map2Json() { HashMap hashMap = new HashMap<>(); hashMap.put(“userName”, “admin”); String json = new Gson().toJson(hashMap); System.out.println(json); } /** * admin */ @Test void json2Map() { String json = “{\”userName\”:\”admin\”}”; HashMap hashMap = new Gson().fromJson(json, new TypeToken() {}.getType()); System.out.println(hashMap.get(“userName”)); } /** * 默认的字段转换规则,字段名不变 * {“roleName”:”超级管理员”} */ @Test void setFieldNamingPolicy1() { Gson gson = new GsonBuilder() .setFieldNamingPolicy(FieldNamingPolicy.IDENTITY) .create(); Role role = new Role(“超级管理员”); String json = gson.toJson(role); System.out.println(json); } /** * 将json中的字段名转换为首字母大写的格式 * {“RoleName”:”超级管理员”} */ @Test void setFieldNamingPolicy2() { Gson gson = new GsonBuilder() .setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE) .create(); Role role = new Role(“超级管理员”); String json = gson.toJson(role); System.out.println(json); } /** * 将json中的字段名转换为首字母大写,单词之间以空格分割的格式 * {“Role Name”:”超级管理员”} */ @Test void setFieldNamingPolicy3() { Gson gson = new GsonBuilder() .setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE_WITH_SPACES) .create(); Role role = new Role(“超级管理员”); String json = gson.toJson(role); System.out.println(json); } /** * 将json中的字段名转换为小写字母,单词之间以下划线分割的格式 * {“role_name”:”超级管理员”} */ @Test void setFieldNamingPolicy4() { Gson gson = new GsonBuilder() .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES) .create(); Role role = new Role(“超级管理员”); String json = gson.toJson(role); System.out.println(json); } /** * 将json中的字段名转换为小写字母,单词之间以分隔线分割的格式 * {“role-name”:”超级管理员”} */ @Test void setFieldNamingPolicy5() { Gson gson = new GsonBuilder() .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_DASHES) .create(); Role role = new Role(“超级管理员”); String json = gson.toJson(role); System.out.println(json); } /** * 将json中的字段名转换为小写字母,单词之间以点分割的格式 * {“role.name”:”超级管理员”} */ @Test void setFieldNamingPolicy6() { Gson gson = new GsonBuilder() .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_DOTS) .create(); Role role = new Role(“超级管理员”); String json = gson.toJson(role); System.out.println(json); } /** * 属性重命名 * {“menu_name”:”系统管理”} */ @Test void serializedName() { Menu menu = new Menu(“系统管理”); String json = new Gson().toJson(menu); System.out.println(json); } /** * {“dept_name”:”产品研发部”} */ @Test void adapter() { Gson gson = new GsonBuilder() //为Dept注册TypeAdapter .registerTypeAdapter(Dept.class, new DeptAdapter()) .create(); Dept dept = new Dept(“产品研发部”); String json = gson.toJson(dept); System.out.println(json); } }

10.json不规范

FastJsonmaven 依赖 com.alibaba fastjson 1.2.68

单元测试public class FastJsonTest { /** * {“roles”:[{“roleName”:”系统管理员”},{“roleName”:”普通管理员”}],”userName”:”admin”} */ @Test void toJson() { Role role1 = new Role(“系统管理员”); Role role2 = new Role(“普通管理员”); User user = new User(); user.setUserName(“admin”); user.setRoles(Arrays.asList(role1, role2)); String userJson = JSON.toJSONString(user); System.out.println(userJson); } /** * admin * {“roles”:[{“roleName”:”系统管理员”},{“roleName”:”普通管理员”}],”userName”:”admin”} */ @Test void jsonParse() { String json = “{\”roles\”:[{\”roleName\”:\”系统管理员\”},{\”roleName\”:\”普通管理员\”}],\”userName\”:\”admin\”}”; JSONObject jsonObject = JSON.parseObject(json); System.out.println(jsonObject.getString(“userName”)); System.out.println(jsonObject); } /** * [{“roleName”:”系统管理员”},{“roleName”:”普通管理员”}] */ @Test void list2Json() { Role role1 = new Role(“系统管理员”); Role role2 = new Role(“普通管理员”); String jsonString = JSON.toJSONString(Arrays.asList(role1, role2)); System.out.println(jsonString); } /** * [{“roleName”:”系统管理员”},{“roleName”:”普通管理员”}] */ @Test void json2List() { String json = “[{\”roleName\”:\”系统管理员\”},{\”roleName\”:\”普通管理员\”}]”; JSONArray jsonArray = JSON.parseArray(json); System.out.println(jsonArray); } /** * [Role(roleName=系统管理员), Role(roleName=普通管理员)] */ @Test void json2List2() { String json = “[{\”roleName\”:\”系统管理员\”},{\”roleName\”:\”普通管理员\”}]”; List users = JSON.parseArray(json, Role.class); System.out.println(users); } /** * User(userName=admin, roles=[Role(roleName=系统管理员), Role(roleName=普通管理员)]) */ @Test void json2Bean() { String json = “{\”roles\”:[{\”roleName\”:\”系统管理员\”},{\”roleName\”:\”普通管理员\”}],\”userName\”:\”admin\”}”; User user = JSON.parseObject(json, User.class); System.out.println(user); } /** * User(userName=admin, roles=[Role(roleName=系统管理员), Role(roleName=普通管理员)]) */ @Test void json2Bean2() { String json = “{\”roles\”:[{\”roleName\”:\”系统管理员\”},{\”roleName\”:\”普通管理员\”}],\”userName\”:\”admin\”}”; User user = JSON.parseObject(json, new TypeReference(){}); System.out.println(user); } /** * {“userName”:”admin”} */ @Test void map2Json() { HashMap hashMap = new HashMap<>(); hashMap.put(“userName”, “admin”); String jsonString = JSON.toJSONString(hashMap); System.out.println(jsonString); } /** * admin */ @Test void json2Map() { String json = “{\”userName\”:\”admin\”}”; Map map = (Map) JSON.parse(json); System.out.println(map.get(“userName”)); } /** * {“userName”:”admin”} */ @Test void json2Map2() { String json = “{\”userName\”:\”admin\”}”; Map map = JSON.parseObject(json); System.out.println(map); } /** * {“groupName”:”分组1″,”idNumber”:{“001”:{“roles”:[{“roleName”:”系统管理员”},{“roleName”:”普通管理员”}],”userName”:”admin”}}} */ @Test void obj2Json() { Role role1 = new Role(“系统管理员”); Role role2 = new Role(“普通管理员”); User user = new User(); user.setUserName(“admin”); user.setRoles(Arrays.asList(role1, role2)); HashMap map = new HashMap<>(); map.put(“001”, user); UserGroup userGroup = new UserGroup(); userGroup.setGroupName(“分组1”); userGroup.setIdNumber(map); String jsonString = JSON.toJSONString(userGroup); System.out.println(jsonString); } /** * UserGroup(groupName=分组1, idNumber={001=User(userName=admin, roles=[Role(roleName=系统管理员), Role(roleName=普通管理员)])}) */ @Test void json2Obj() { String json = “{\”groupName\”:\”分组1\”,\”idNumber\”:{\”001\”:{\”roles\”:[{\”roleName\”:\”系统管理员\”},{\”roleName\”:\”普通管理员\”}],\”userName\”:\”admin\”}}}”; UserGroup userGroup = JSON.parseObject(json, UserGroup.class); System.out.println(userGroup); } }

Jackson单元测试/** * @author 当我遇上你 * @公众号 当我遇上你 * @since 2020-06-11 */ public class JacksonTest { /** * {“userName”:”admin”,”roles”:[{“roleName”:”系统管理员”},{“roleName”:”普通管理员”}]} * @throws JsonProcessingException */ @Test void Obj2Json() throws JsonProcessingException { Role role1 = new Role(“系统管理员”); Role role2 = new Role(“普通管理员”); User user = new User(); user.setUserName(“admin”); user.setRoles(Arrays.asList(role1, role2)); ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(user); System.out.println(json); } /** * 需要无参构造方法 * User(userName=admin, roles=[Role(roleName=系统管理员), Role(roleName=普通管理员)]) * @throws JsonProcessingException */ @Test void json2Obj() throws JsonProcessingException { String json = “{\”userName\”:\”admin\”,\”roles\”:[{\”roleName\”:\”系统管理员\”},{\”roleName\”:\”普通管理员\”}]}”; ObjectMapper mapper = new ObjectMapper(); User user = mapper.readValue(json, User.class); System.out.println(user); } /** * admin * @throws JsonProcessingException */ @Test void json2Obj2() throws JsonProcessingException { String json = “{\”userName\”:\”admin\”,\”roles\”:[{\”roleName\”:\”系统管理员\”},{\”roleName\”:\”普通管理员\”}]}”; ObjectMapper mapper = new ObjectMapper(); JsonNode jsonNode = mapper.readTree(json); String userName = jsonNode.get(“userName”).asText(); System.out.println(userName); } /** * [{“roleName”:”系统管理员”},{“roleName”:”普通管理员”}] * @throws JsonProcessingException */ @Test void list2Json() throws JsonProcessingException { Role role1 = new Role(“系统管理员”); Role role2 = new Role(“普通管理员”); ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(Arrays.asList(role1, role2)); System.out.println(json); } /** * 需要无参构造方法 * [Role(roleName=系统管理员), Role(roleName=普通管理员)] * @throws JsonProcessingException */ @Test void json2List() throws JsonProcessingException { String json = “[{\”roleName\”:\”系统管理员\”},{\”roleName\”:\”普通管理员\”}]”; ObjectMapper mapper = new ObjectMapper(); List roles = mapper.readValue(json, new TypeReference() { }); System.out.println(roles); } }

最后本文到此结束,感谢阅读。如果您觉得不错,请关注公众号【当我遇上你】,您的支持是我写作的最大动力。

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
相关推荐
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容