建设信用卡官方网站,大连谷歌seo公司,南京市网站建设公司,英文网站建设 江门9. JSON
9.1 简介
JSON#xff08;JavaScript Object Notation#xff0c;JS 对象标记#xff09;是一种轻量级数据交换格式#xff0c;采用独立于编程语言的文本格式储存和表示数据#xff0c;易于机器解析和生成#xff0c;提升网络传输效率。
任何 JavaScript 支持…9. JSON
9.1 简介
JSONJavaScript Object NotationJS 对象标记是一种轻量级数据交换格式采用独立于编程语言的文本格式储存和表示数据易于机器解析和生成提升网络传输效率。
任何 JavaScript 支持的数据类型都可以通过 JSON 表示例如字符串、数字、对象、数组等。
JSON 键值对保存 JavaScript 对象键:值 对组合中的键名在前用双引号 包裹值在后两者使用冒号 : 分隔。
{name: 弗罗多}
{age: 50}
{sex: 男}JSON 是 JavaScript 对象的字符串表示法使用文本表示一个 JS 对象本质是一个字符串。 var obj {a: Hello, b: World}; // JS 对象
var json {a: Hello, b: World}; // JSON 字符串使用 JSON.stringify() 方法可将 JavaScript 对象转换为JSON字符串。 var json JSON.stringify({a: Hello, b: World});
// json {a: Hello, b: World}使用 JSON.parse() 方法可将 JSON 字符串转换为 JS 对象。 var obj JSON.parse({a: Hello, b: World});
// obj {a: Hello, b: World}9.2 Controller 返回 JSON
(1) jackson
!--jackson--
dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-core/artifactIdversion2.10.0/version
/dependency
!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --
dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.10.0/version
/dependency注意新导入依赖时发布的lib目录下引入依赖
(2) 中文乱码
RequestMapping 注解 produces 属性解决中文乱码
Controller
public class UserController {// produces 设置编码格式解决中文乱码RequestMapping(value /testResJson, produces application/json;charsetutf-8)// 不被视图解析器解析返回JSON字符串ResponseBodypublic String testResJson() throws JsonProcessingException {User user new User(弗罗多, 50, 男);ObjectMapper mapper new ObjectMapper();// 将对象转换为 JSONreturn mapper.writeValueAsString(user);}
}Spring MVC 配置解决中文乱码问题
!--spring-servlet.xml--
mvc:annotation-drivenmvc:message-converters register-defaultstruebean classorg.springframework.http.converter.StringHttpMessageConverterconstructor-arg valueUTF-8//beanbean classorg.springframework.http.converter.json.MappingJackson2HttpMessageConverterproperty nameobjectMapperbean classorg.springframework.http.converter.json.Jackson2ObjectMapperFactoryBeanproperty namefailOnEmptyBeans valuefalse//bean/property/bean/mvc:message-converters
/mvc:annotation-driven测试
Controller
public class UserController {// produces 设置编码格式解决乱码RequestMapping(value /testResJson)// 不被视图解析器解析返回字符串ResponseBodypublic String testResJson() throws JsonProcessingException {User user new User(弗罗多, 50, 男);ObjectMapper mapper new ObjectMapper();return mapper.writeValueAsString(user);}RequestMapping(value /testResMoreJson)ResponseBodypublic String testResMoreJson() throws JsonProcessingException {ListUser userList new ArrayListUser();User frodo new User(弗罗多, 50, 男);User sam new User(山姆, 50, 男);User aragon new User(阿拉贡, 50, 男);userList.add(frodo);userList.add(sam);userList.add(aragon);ObjectMapper mapper new ObjectMapper();return mapper.writeValueAsString(userList);}RequestMapping(/testResTimeJson)ResponseBodypublic String testResTimeJson() throws JsonProcessingException {ObjectMapper mapper new ObjectMapper();//不使用时间戳的方式mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);//自定义日期格式对象SimpleDateFormat simpleDate new SimpleDateFormat(yyyy-MM-dd HH:dd:ss);//指定日期格式mapper.setDateFormat(simpleDate);Date date new Date();// java 时间格式控制// String formatDate simpleDate.format(date);return mapper.writeValueAsString(date);}
}抽取为工具类
public class JsonUtil {public static String getJson(Object object) {return getJson(object,yyyy-MM-dd HH:mm:ss);}public static String getJson(Object object,String dateFormat) {ObjectMapper mapper new ObjectMapper();//不使用时间差的方式mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);//自定义日期格式对象SimpleDateFormat sdf new SimpleDateFormat(dateFormat);//指定日期格式mapper.setDateFormat(sdf);try {return mapper.writeValueAsString(object);} catch (JsonProcessingException e) {e.printStackTrace();}return null;}}(3) FastJson
dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.70/version
/dependencyRequestMapping(value /testFastJson)
ResponseBody
public String testFastJson() throws JsonProcessingException {ListUser userList new ArrayListUser();User frodo new User(弗罗多, 50, 男);User sam new User(山姆, 50, 男);User aragon new User(阿拉贡, 50, 男);userList.add(frodo);userList.add(sam);userList.add(aragon);System.out.println(*******Java对象 转 JSON字符串*******);String str1 JSON.toJSONString(userList);System.out.println(JSON.toJSONString(list)str1);String str2 JSON.toJSONString(frodo);System.out.println(JSON.toJSONString(frodo)str2);System.out.println(\n****** JSON字符串 转 Java对象*******);User jp_user1JSON.parseObject(str2,User.class);System.out.println(JSON.parseObject(str2,User.class)jp_user1);System.out.println(\n****** Java对象 转 JSON对象 ******);JSONObject jsonObject1 (JSONObject) JSON.toJSON(sam);System.out.println((JSONObject) JSON.toJSON(sam)jsonObject1.getString(name));System.out.println(\n****** JSON对象 转 Java对象 ******);User to_java_user JSON.toJavaObject(jsonObject1, User.class);System.out.println(JSON.toJavaObject(jsonObject1, User.class)to_java_user);return JSON.toJSONString(userList);
}