SpringMVC學習---JSON初體驗
阿新 • • 發佈:2021-01-01
什麼是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(後端->前端)
- 匯入jackson的依賴
- 寫一個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工具包…