JSON

一、什么是JSON

    1、JSON,是一种轻量级的数据交换格式

    2、采用完全独立于编程语言的文本格式来存储和表示数据

    3、简洁和清晰的层次结构使得Json成为理想的数据交换语言

    4、易于人阅读和编写,同时也易于机器解析和生成,并且有效地提高网络传参效率

    5、对象标识为键值对,数据由逗号分隔

    6、花括号保存对象

    7、方括号保存数组

二、JSON和JavaScript的对象互换

  1、将json对象转换为JavaScript对象,使用JSON.parse()方法。

  2、将JavaScript对象转换为json对象,使用JSON.stringify()方法

<script type="text/javascript">
        //编写一个JavaScript对象
        var user={
            name:"年华",
            age:20,
            sex:"女"
        };
        console.log(user);
//将js对象转换为json对象 var json=JSON.stringify(user); console.log(json);
//将json对象转换为javascript对象 var obj=JSON.parse(json); console.log(obj) </script>

三、Controller返回JSON数据(java层面)

  1、导入json jar包

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

  2、配置Springmvc需要的配置

    web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>Springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:com/zy/config/springmvc-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <!--过滤器-->
    <filter>
        <filter-name>encoding</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encoding</filter-name>
        <url-pattern>/</url-pattern>
    </filter-mapping>

</web-app>

   配置 springmvc-servlet.xml 文件,和springmvc里面的配置文件内容一样

  3、编写一个实体列,测试controller

/*导入lombokjar包*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private String name;
    private int age;
    private String sex;
}

  controller.java

//@Controller //它会走视图解析器

@RestController //它不会走视图解析器
public class UserController { //运行出现乱码,对乱码进行设置 使用produces //1、手动解决乱码 //2、在xml配置json乱码 @RequestMapping(value = "/json",produces = "application/json;charset=utf-8")
// @ResponseBody
//它不会走视图解析器,会直接返回一个字符串,与controller配套使用的 public String json1() throws JsonProcessingException { //jackson中的objectmapper ObjectMapper mapper = new ObjectMapper(); //创建一个对象 User user = new User("年华",3,"女"); String s = mapper.writeValueAsString(user); return s; } }

  在springmvc中的xml配置json乱码

 <!--配置json乱码-->
    <mvc:annotation-driven>
        <mvc:message-converters>
            <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>

  显示

  创建一个数组/获取时间

 @RequestMapping("/json1")
     public String json2() throws JsonProcessingException {

         ObjectMapper mapper = new ObjectMapper();
         //创建一个数组
         List<User> userList=new ArrayList<User>();

         User user = new User("年华",3,"女");
         User user1 = new User("年华1",5,"女");
         User user2 = new User("年华2",8,"女");
         User user3 = new User("年华3",4,"女");
         User user4 = new User("年华4",10,"女");
         userList.add(user);
         userList.add(user1);
         userList.add(user2);
         userList.add(user3);
         userList.add(user4);

         String s1 = mapper.writeValueAsString(userList);
         return s1;
     }
     @RequestMapping("/json4")
    public String json3() throws JsonProcessingException {

        ObjectMapper mapper = new ObjectMapper();
        //使用 ObjectMapper来格式化输出,不使用时间戳
         mapper.configure(SerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS, false);
         //自定义格式
         SimpleDateFormat spd = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
         mapper.setDateFormat(spd);
        //获取时间,
        Date date = new Date();
         String s1 = mapper.writeValueAsString(date);

         //ObjectMapper ,时间解析后的默认格式为Timestamp  时间戳
       /*  String s = spd.format(date);*/


         return s1 ;
    }

 

posted @ 2021-04-01 22:11  年华只余一地悲凉  阅读(88)  评论(0编辑  收藏  举报
/*粒子线条,鼠标移动会以鼠标为中心吸附的特效*/