一、jQuery的Json使用
(1)封装Json成String
var user={
id:1,
name:"阿果",
age:20
}
JSON.stringify(user);
(2)从服务器获取Json
$(".addItemToCart").click(function () { //绑定点击事件
$.getJSON(
"${requestScope.basePath}cartServlet",
"action=ajaxAddItem&id="+$(this).attr("bookId"),//json的访问地址
function (data) {
$("#cartNewBookCount1").text(data.totalCount); //对json字符串对象处理
}
)
})
二、后端使用Json
(1)Jackson
1.导包
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.5</version>
</dependency>
2.乱码问题
在spring.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="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>
3.对象转为Json字符串
一下是JdbcUtils的工具类代码,直接调用即可得到Json字符串对象
package com.gy.utils;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.gy.pojo.User;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.SocketHandler;
public class JdbcUtils {
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_DATE_KEYS_AS_TIMESTAMPS,false);
// 自定义日期的格式
SimpleDateFormat sdf = new SimpleDateFormat(dateformat);
mapper.setDateFormat(sdf);
try {
return mapper.writeValueAsString(object);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
}
4.Json字符串转为JavaBean对象
一下都是JdbcUtils的工具类的方法,在工具类添加方法即可
public static <T> T getJavaBean(String json,Class<T> tClass){
ObjectMapper mapper = new ObjectMapper();
try {
return mapper.readValue(json,tClass);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
public static <T> T getJavaBean(String json,TypeReference<T> typeReference ){
ObjectMapper mapper = new ObjectMapper();
try {
return mapper.readValue(json,typeReference);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
5.工具类中getJavaBean(String json,TypeReference<T> typeReference )的调用测试
public static void main(String[] args) {
List<User> list = new ArrayList<User>();
User user1 = new User(1, "阿果", 20);
User user2 = new User(2, "阿果", 20);
list.add(user1);
list.add(user2);
String json = JdbcUtils.getJson(list);
//以上只是准备json字符串的测试数据
//使用
List<User> javaBean = JdbcUtils.getJavaBean(json, new TypeReference<List<User>>() {
});
}
(2)Fastjson
1.导包
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.78</version>
</dependency>
2.使用
public static void main(String[] args) {
List<User> list = new ArrayList<User>();
User user1 = new User(1, "阿果", 20);
User user2 = new User(2, "阿果", 20);
list.add(user1);
list.add(user2);
//*************************************bean转为json字符数
String jsonStringList = JSON.toJSONString(list);
String jsonStringUser = JSON.toJSONString(user1);
//*************************************json转为单个bean
User user = JSON.parseObject(jsonStringUser, User.class);
//*************************************json转为集合bean
List<User> list1 = JSON.parseObject(jsonStringList, new TypeReference<List<User>>() {});
//*************************************将时间转为json时间字符串 返回:"2021-09-14 23:44:15"
JSON.toJSONStringWithDateFormat(new Date(), JSON.DEFFAULT_DATE_FORMAT);
}