1. 程式人生 > 其它 >Map根據value的值進行排序(簡單易懂)

Map根據value的值進行排序(簡單易懂)

技術標籤:SpringMVCspringmvcjson

json

  • JSON(JavaScript Object Notation, JS 物件標記)是一種輕量級的資料交換格式,目前使用廣泛。
  • 採用完全獨立於程式語言的文字格式來儲存和表示資料。
  • 簡潔和清晰的層次結構使得Json成為理想的資料交換語言。
  • 易於人閱讀和編寫,同時也易於機器解析和生成,並有效的提升網路傳輸效率。

在 JavaScript 語言中,一切都是物件。因此,任何JavaScript 支援的型別都可以通過 JSON 來表示,例如字串、數字、物件、陣列等。看看他的要求和語法格式:

  • 物件表示為鍵值對,資料由逗號分隔

  • 花括號儲存物件

  • 方括號儲存陣列

JSON 鍵值對是用來儲存 JavaScript 物件的一種方式,和 JavaScript 物件的寫法也大同小異,鍵/值對組合中的鍵名寫在前面並用雙引號 “” 包裹,使用冒號 : 分隔,然後緊接著值:
例:

{"name": "QinJiang"}
{"age": "3"}
{"sex": "男"}
var obj = {a: 'Hello', b: 'World'}; //這是一個物件,注意鍵名也是可以使用引號包裹的
var json = '{"a": "Hello", "b": "World"}'
; //這是一個 JSON 字串,本質是一個字串

使用Jackson

1.建立一個新的moudle,新增web依賴。
2.匯入jackson的依賴

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

2.配置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">
    <!--1.註冊servlet-->
    <servlet>
        <servlet-name>SpringMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--通過初始化引數指定SpringMVC配置檔案的位置,進行關聯-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-servlet.xml</param-value>
        </init-param>
        <!-- 啟動順序,數字越小,啟動越早 -->
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!--所有請求都會被springmvc攔截 -->
    <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>

3.配置springmvc配置檔案

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       https://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!-- 自動掃描指定的包,下面所有註解類交給IOC容器管理 -->
    <context:component-scan base-package="com.kuang.controller"/>

    <!-- 檢視解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          id="internalResourceViewResolver">
        <!-- 字首 -->
        <property name="prefix" value="/WEB-INF/jsp/" />
        <!-- 字尾 -->
        <property name="suffix" value=".jsp" />
    </bean>

</beans>

4.建立實體類

package com.kuang.pojo;

public class User {
    private int id;
    private String name;
    private int age;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public User() {
    }

    public User(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

5.寫controller

@Controller
public class TestController {

    @RequestMapping("/json1")
    @ResponseBody
    public String test() throws JsonProcessingException {
        User user = new User(1, "張三", 20);

        //建立一個jackson物件對映器,用來解析資料
        ObjectMapper objectMapper = new ObjectMapper();
        //將物件解析為json格式
        String str = objectMapper.writeValueAsString(user);
        //返回字串,由於@ResponseBody註解,不跳轉介面
        return str;
    }
}

6.結果
在這裡插入圖片描述
發現結果出現亂碼
解決:在springmvc配置檔案中增加配置

    <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>

結果正常
在這裡插入圖片描述
測試傳入一個list集合

    @RequestMapping("/json2")
    @ResponseBody
    public String test2() throws JsonProcessingException {
        List<User> list = new ArrayList();
        User user1 = new User(1, "張三", 20);
        User user2 = new User(2, "李四", 19);
        User user3 = new User(3, "王五", 21);
        list.add(user1);
        list.add(user2);
        list.add(user3);

        //建立一個jackson物件對映器,用來解析資料
        ObjectMapper objectMapper = new ObjectMapper();
        //將物件解析為json格式
        String str = objectMapper.writeValueAsString(list);
        //返回字串,由於@ResponseBody註解,不跳轉介面
        return str;
    }

結果:
在這裡插入圖片描述