1. 程式人生 > 其它 >SpringMVC學習---JSON初體驗

SpringMVC學習---JSON初體驗

技術標籤:SpringMVCjsonspringmvc

什麼是JSON

JSON (JavaScript Object Notation) ,它其實就是資料的一種表示方式,其實就是字串(高逼格說叫:文字格式),例如:

{
	"name" : "張三",
	"age" : 18,
	"sex" : "男",
	"book" : {
		"bname" : "好好學java",
		"price" : 25.6
	}
, "hobbies":[ { "hobby" : "唱" }, { "hobby" : "跳" }, { "hobby" : "rap" }, { "hobby" : "籃球" } ] }

JSON和JavaScript物件的關係

可以這麼理解:
JSON是JavaScript的字串表示,它使用文字表示JS的資訊,本質上,JSON是一個字串

var jsObj =
{name : '張三', sex : '男'}; //這是javaScript物件 var json = '{"name" : "張三", "sex" : "男"}'; //這是json字串

關於JSON與JavaScript的互相轉化:
JSON->JavaScript(使用JavaScript內嵌的JSON.parse()方法)

	//方法的引數為json字串,返回值是JavaScript物件
	jsObj = JSON.parse(json);

JavaScript->JSON(使用JavaScript內嵌的JSON.stringify()方法)

	//方法的引數為JavaScript物件,返回值為JSON字串
	json = JSON.stringify(jsObj);

前端如何傳遞JSON給後端(前端->後端)

在這裡先埋個坑(未完待續…)

在SpringMVC中,如何讓後端返回給前端JSON(後端->前端)

  1. 匯入jackson的依賴
    在這裡插入圖片描述
  2. 寫一個Controller
    [注]:這裡在@RequestMapping中設定了一個屬性值:
    produces = “application/json;charset=utf-8”
    這樣做是為了防止JSON解析時出現亂碼問題。
@Controller
public class JSONController{
	@RequestMapping(value = "/j1",produces = "application/json;charset=utf-8")
	@Responsebody//它就不會走檢視解析器,會直接返回一個字串
	public String json1() throws JsonProcessingException{
		//Jackson ObjectMapper
		ObjectMapper mapper = new ObjectMapper();
		//建立一個物件(id,姓名,年齡)
		User user = new User(2010001,"張三",18);
		//將物件轉換為JSON字串
		String str = mapper.writeValueAsString(user):
		return str;
	}
}

其實,還有一種方法,來防止JSON出現亂碼,即在SpringMVC配置檔案中配置如下內容(這裡用到了JackSon):

<!--解決json 亂碼配置-->
<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>

當給某一個類加上@RestController時,則代表該註解類下的所有方法都不經過檢視解析器,只返回字串

@RestController
public class StringController{
	//...
}

另外,還可以使用阿里巴巴開發的fastjson工具包…