JSON的简单使用
1、json在前端只有两个方法
- JSON.parse【解析:将json字符串解析为js对象】
- JSON.stringify【转换:将js对象转换成json字符串】
1.1、示例
<script>
// 创建js对象
var user = {name :"packet",
sex : "男",
age : 18
}
//转换成json字符串
var userJson = JSON.stringify(user);
console.log(userJson);
console.log("=========================");
//转换成js对象
var userJS = JSON.parse(userJson);
console.log(userJS);
</script>
2、Controller返回json数据给前端
- 使用解析第三方工具:jackson 、Fastjson
2.1、jackson
- 导包【在pom.xml中】
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.16.0-rc1</version>
</dependency>
- 写一个Controller
@Controller
public class HelloController {
@RequestMapping ("/hello")
@ResponseBody
public String hello() throws JsonProcessingException {
User user = new User(1,"packet",18);
ObjectMapper mapper = new ObjectMapper();
String str = mapper.writeValueAsString(user);
return str;
}
}
注意:记得在项目结构里面导入新的包!!!!!!!!!!!!!!!!!!!
不然会报初始化错误,因为你在pom.xml中导入了新的包
这样返回的就是json字符串啦!!!
2.2json乱码问题
- 在applicationContext.xml中,导入以下代码【解决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="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="supportedMediaTypes" value="text/html;charset=UTF-8"/>
<property name="features">
<array>
<value>WriteMapNullValue</value>
<value>WriteNullStringAsEmpty</value>
</array>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
2.3Fastjosn
- 导包【在pom.xml中】
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.72</version>
</dependency>
使用
//字符串转换成json字符串
JSON.toJSONString(str);
//json字符串转换成java对象
User newUser = JSON.parseObject(str,User.class);
3、注释
- @ResponseBody
- 会阻止视图解析器解析返回的字符串
//json字符串转换成java对象
User newUser = JSON.parseObject(str,User.class);
- 会阻止视图解析器解析返回的字符串
## 3、注释
- @ResponseBody
- 会阻止视图解析器解析返回的字符串
- 也可以使用@RestController