其他分享
首页 > 其他分享> > SpringMVC入门——day3

SpringMVC入门——day3

作者:互联网

一 . JSON(JavaScript Object Notation,JS对象标记)

  一种轻量级的数据交换格式,采用 文本格式 来存储和表示数据、

  1 . 语法格式:对象 表示为 键值对,数据用 逗号 分割

       花括号 保存 对象

       方括号 保存 数组

       例如:{"name":"Redfish"}

  2 . 可以通俗的理解为:JSON 是 JavaScript对象 的字符串表示法,JSON使用 文本 来表示 一个JS对象的信息,本质上是一个字符串

            这是一个JavaScript对象:var obj =   { a : ' Hello ' , b : ' world '  };

            这是一个JSON字符串:     var json = { " a " : " Hello " , " b " : " world "  };

  3 . 相互转换:

        JSON字符串 转 JavaScript对象:    parse  

var obj = JSON.parse('{"a": "Hello", "b": "World"}');
//结果是 {a: 'Hello', b: 'World'}        

        JavaScript对象 转 JSON字符串:    stringify

var json = JSON.stringify({a: 'Hello', b: 'World'});
//结果是 '{"a": "Hello", "b": "World"}'

  4 . Jackson:json解析工具,使用其ObjectMapper(对象映射器)来解析数据

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

  5 . 乱码问题可在 Spring配置文件中统一处理

<mvc:annotation-driven>
   <mvc:message-converters register-defaults="true">
       <bean class="org.springframework.http.converter.StringHttpMessageConverter">
           <constructor-arg value="UTF-8"/>
       </bean>
       <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
           <property name="objectMapper">
               <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
                   <property name="failOnEmptyBeans" value="false"/>
               </bean>
           </property>
       </bean>
   </mvc:message-converters>
</mvc:annotation-driven>

  6 . 返回 JSON字符串时,有两种方法:  1 . Controller + ResponseBody

                    2 . RestController

  7 . 使用 ObjectMapper的 writeValueAsString 方法 把 JavaScript对象 解析为 JSON字符串

@RequestMapping(value = "json1")
    public String json1() throws JsonProcessingException {

        //创建一个jackson的对象映射器,用来解析数据
        ObjectMapper mapper = new ObjectMapper();
        //创建一个对象
        User user = new User("炖红鱼1号", 18, "女");
        //将我们的对象解析成为json格式
        String str = mapper.writeValueAsString(user);
        //由于@ResponseBody注解,这里会将str转成json格式返回;十分方便
        return str;
        
    }

  7 . 当输出时间对象时,默认格式为 时间戳 timestamp 

@RequestMapping("/json3")
public String json3() throws JsonProcessingException {

   ObjectMapper mapper = new ObjectMapper();

   //创建时间一个对象,java.util.Date
   Date date = new Date();
   //将我们的对象解析成为json格式
   String str = mapper.writeValueAsString(date);
   return str;
}

    结果为1453245643243,需要改为年月日格式则需如下配置:

@RequestMapping("/json4")
public String json4() throws JsonProcessingException {

   ObjectMapper mapper = new ObjectMapper();

   //不使用时间戳的方式
   mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
   //自定义日期格式对象
   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   //指定日期格式
   mapper.setDateFormat(sdf);

   Date date = new Date();
   String str = mapper.writeValueAsString(date);

   return str;
}

     但是如果每次使用都写这么一大段是比较麻烦的,所以将其封装到一个工具类中

public class JsonUtils {

    public static String getJson(Object object) throws JsonProcessingException {
        return getJson(object,"yyyy-MM-dd HH:mm:ss");
    }
    public static String getJson(Object object,String dataFormat) throws JsonProcessingException {
        ObjectMapper mapper = new ObjectMapper();

        //不适用时间戳的方式
        mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
        //自定义日期格式对象
        SimpleDateFormat sdf = new SimpleDateFormat(dataFormat);
        //指定日期格式
        mapper.setDateFormat(sdf);
        return mapper.writeValueAsString(object);
    }

}

  使用阿里的FastJSON

/*使用阿里的 FastJson*/
    @RequestMapping("/fastjson")
    public String fastjson() throws JsonProcessingException {

        User user1 = new User("炖红鱼1号", 18, "女");
        User user2 = new User("炖红鱼2号", 18, "女");
        User user3 = new User("炖红鱼3号", 18, "女");

        ArrayList<User> list = new ArrayList<>();
        list.add(user1);
        list.add(user2);
        list.add(user3);

        System.out.println("*******Java对象 转 JSON字符串*******");
        String str1 = JSON.toJSONString(list);
        System.out.println("JSON.toJSONString(list)==>"+str1);
        String str2 = JSON.toJSONString(user1);
        System.out.println("JSON.toJSONString(user1)==>"+str2);

        System.out.println("\n****** JSON字符串 转 Java对象*******");
        User jp_user1=JSON.parseObject(str2,User.class);
        System.out.println("JSON.parseObject(str2,User.class)==>"+jp_user1);

        System.out.println("\n****** Java对象 转 JSON对象 ******");
        JSONObject jsonObject1 = (JSONObject) JSON.toJSON(user2);
        System.out.println("(JSONObject) JSON.toJSON(user2)==>"+jsonObject1.getString("name"));

        System.out.println("\n****** JSON对象 转 Java对象 ******");
        User to_java_user = JSON.toJavaObject(jsonObject1, User.class);
        System.out.println("JSON.toJavaObject(jsonObject1, User.class)==>"+to_java_user);

        return "hello";

    }

 

    


                    

 

标签:mapper,入门,SpringMVC,day3,对象,JSON,User,new,String
来源: https://www.cnblogs.com/TRUENO-86/p/16093372.html