zoukankan      html  css  js  c++  java
  • java对象和json字符串的相互转换

    可以直接看最后面的第二种方式更简单一点。

    1.先导入该依赖,一般使用这一个就行了

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.10.0</version>
    </dependency>

    2.以下都是测试代码,注释都写在代码中了,自行理解,redis部分替换成对应的字符串即可。

    @RunWith(SpringJUnit4ClassRunner.class)
    @SpringBootTest
    public class MyTest {
    
        @Autowired
        private StringRedisTemplate redisTemplate;
    
        //存入字符串
        @Test
        public void test01() {
            String name = "zhangmeili";
            redisTemplate.opsForValue().set("name", name);
        }
    
        //对象转成json字符串存入redis
        @Test
        public void test02() throws JsonProcessingException {
            User u = new User(1001, "张三丰", "男", 20);
            //{"id":"1001","name":"张三丰",,,,,}
            ObjectMapper obj = new ObjectMapper();
            String json = obj.writeValueAsString(u);
            redisTemplate.opsForValue().set("user", json);
        }
    
        //多个对象集合===>Json字符串
        @Test
        public void test03() throws JsonProcessingException {
            User u1 = new User(1001, "张三丰", "男", 21);
            User u2 = new User(1002, "张五丰", "男", 22);
            User u3 = new User(1003, "张六丰", "男", 23);
            User u4 = new User(1004, "张七丰", "男", 24);
            List<User> list = Arrays.asList(u1, u2, u3, u4);
    
            ObjectMapper obj = new ObjectMapper();
            String json = obj.writeValueAsString(list);
            //[{},{},{}]
            redisTemplate.opsForValue().set("users", json);
        }
    
    
        //获取字符串
        @Test
        public void test04() {
            String name = redisTemplate.opsForValue().get("name");
            System.out.println(name);
        }
    
        //redis中的json字符串====>一个对象
        @Test
        public void test05() throws IOException {
            String json = redisTemplate.opsForValue().get("user");
            ObjectMapper obj = new ObjectMapper();
            User user = obj.readValue(json, User.class);
            System.out.println(user);
        }
    
        //redis中的json字符串====>多个对象list集合
        @Test
        public void test06() throws IOException {
            String json = redisTemplate.opsForValue().get("users");
            ObjectMapper obj = new ObjectMapper();
            List<User> users = obj.readValue(json, 
                    obj.getTypeFactory().constructCollectionType(List.class, User.class));
            System.out.println(users);;
        }
    
        //存入一个Map对象转成json字符串
        @Test
        public void test07() throws JsonProcessingException {
            Map<String,String> map = new HashMap<>();
            map.put("location", "上海");
            map.put("date", "2019-12-24");
            map.put("department","宣传部");
    
            ObjectMapper obj = new ObjectMapper();
            String json = obj.writeValueAsString(map);
            //{"location":"上海","name":"张三丰",,,,,}
            redisTemplate.opsForValue().set("map",json, 100, TimeUnit.MINUTES);
    
        }
    
        //获取一个json字符串=====>map集合
        @Test
        public void test08() throws IOException {
            ObjectMapper obj = new ObjectMapper();
    
            String json = redisTemplate.opsForValue().get("map");
            Map<String, String> map = obj.readValue(json, 
                    obj.getTypeFactory().constructMapType(Map.class, String.class, String.class));
            System.out.println(map);
        }

    //  JsonNode jsonNode = objectMapper.readTree(s);
    //  if (!"0000".equals(jsonNode.get("code").asText())) {
    //   throw new RuntimeException(jsonNode.get("data").asText());
    //  }
    //  LoginUser loginUser = objectMapper.treeToValue(jsonNode, LoginUser.class);

    }

     ============================================

    貌似使用阿里巴巴的fastjson更简单点:

            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.1.37</version>
            </dependency>

    然后使用JSONObject的众多方法,这里就放几个简单的,用法很简单

            //把字符串转换为json类型
            JSONObject jsonObject = JSONObject.parseObject("xxx");
            Object o = jsonObject.get("xxx");
            
            //把对象转成json格式的字符串
            String s1 = JSONObject.toJSONString(map);        
  • 相关阅读:
    Spring IOC -bean对象的生命周期详解
    @RequestBody 和@ResponseBody 注解详解
    SpringMVC访问静态资源的三种方式
    servlet的url-pattern匹配规则详细描述
    SpringMVC POJO入参过程分析
    SpringMVC @ModelAttribute详解
    SpringMVC @SessionAttributes注解
    SpringMVC 向页面传值-Map、Model和ModelMap
    SpringMVC 向前台页面传值-ModelAndView
    SpringMVC 使用Servlet原生API作为参数
  • 原文地址:https://www.cnblogs.com/sun2020/p/12795696.html
Copyright © 2011-2022 走看看