一、初识Json
多用于存储数据和交换文本信息的语法
1. 基本规则
-
数据在名称/值对中:json数据是由键值对构成的
-
数据由逗号分隔
-
花括号保存对象
-
方括号保存数组
<script>
var person = {name:"张三",age = 23,gender = true};
var person = {
person:[
{name:"张三",age = 23,gender = true};
{name:"李四",age = 23,gender = true};
{name:"王五",age = 23,gender = true};
]
};
</script>
2. Json数据和java的数据转化
- JSON转换为Java对象
- Java对象转换为JSON对象
二、实操Json
1.使用Jackon将Java对象转换为json
- 导入jackon的包后将Java对象转换为json
@Controller
public class UserController{
@RequestMapping("/json1")
//jackon只需要一个简单的注解就可以实现
//ResonponseBody,将服务器返回的对象转换为json对象响应回去
@ResponseBody
public String json1 thows JsonProcessingException{
//需要一个jackon的映射对象,就是一个类,使用它可以直接将对象转换为json字符串
ObjectMapper mapper = new ObjectMapper();
//创建一个对象
User user = new User("陈帅","男");
System.out.println(user);
//将Java对象转换为json字符串
String str = mapper.writeValueAsString(user);
System.out,println(str);
return str;//由于使用了@ResponseBody注解,这里会将str以json的方式返回
}
}
太复杂了,来。精简一下哎
@RequestMapping("/json1")
@ResponseBody
public String json1 thows JsonProcessingException{
User user = new User("陈帅","男");
return new ObjectMapper().writeValueAsString(user);
//这这里为了精简使用了匿名调用
//简单来说这就是通用的模板
}
2. 解决乱码的问题
- 在注释里面设置
将编码设置为utf_8
将requestmapping里面设置
@RequestMapping("/json1",produces = "application/json;charset=utf-8" )//在这里设置
@ResponseBody
public String json1 thows JsonProcessingException{
User user = new User("陈帅","男");
return new ObjectMapper().writeValueAsString(user);
}
- 在xml里面配置一些代码
在servlet 里的 annotation里面进行配置
下面给出这段通用的代码,以后需要直接从这里copy就行
<!-- 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>
ok,完结 ,Json的内容很少,主要是在这里屯一下这些代码,以后好copy。