jackson:apache
jar包
一.jackson的方法
ObjectMapper类的静态方法:
1.将json转对象的方法:
new ObjectMapper().readValue("",Class<Object>clazz);返回java对象。
第一个参数用request.getInputStream()获取客户端传来的值。
第二个参数是javabean的Class对象。
2.将对象转json的方法:
new ObjectMapper().writeValueAsString(Object);返回json字符串。
再配合response.getWrite().write(json字符串);将json字符串发给客户端。
一.将json字符串转java对象
LinkMan linkMan = new ObjectMapper().readValue("{\"id\":100,\"name\":\"zxxx\",\"sex\":\"男\",\"age\":40,\"address\":\"长沙\",\"qq\":\"20000\",\"email\":\"10000@qq.com\"}", LinkMan.class);
System.out.println(linkMan);//LinkMan{id=100, name='zxxx', sex='男', age=40, address='长沙', qq='20000', email='10000@qq.com'}
二.将java对象转成json字符串,{}表示json,json由多个"name":value,组成。
LinkMan linkMan = new LinkMan(1,"zzz","男",100,"长沙","10000","10000@qq.com");
try {
String s = new ObjectMapper().writeValueAsString(linkMan);
System.out.println(s);//{"id":1,"name":"zzz","sex":"男","age":100,"address":"长沙","qq":"10000","email":"10000@qq.com"}
} catch (JsonProcessingException e) {
e.printStackTrace();
}
二.fastjson:阿里巴巴
jar包:
JSON抽象类的静态方法:
1.将json转对象的方法:JSON.parseObject("",Class<Object>);返回对象。
第一个参数用request.getInputStream()获取客户端传来的值。
第二个参数是javabean的Class对象。
2.将对象转json的方法:JSON.toJSONString(Object);返回json字符串。
再配合response.getWrite().write(json字符串);将json字符串发给客户端。
LinkMan linkMan=JSON.parseObject("{\"id\":100,\"name\":\"zxxx\",\"sex\":\"男\",\"age\":40,\"address\":\"长沙\",\"qq\":\"20000\",\"email\":\"10000@qq.com\"}",LinkMan.class);
System.out.println(linkMan);//LinkMan{id=100, name='zxxx', sex='男', age=40, address='长沙', qq='20000', email='10000@qq.com'}
LinkMan linkMan = new LinkMan(1,"zzz","男",100,"长沙","10000","10000@qq.com");
System.out.println(JSON.toJSONString(linkMan));//{"address":"长沙","age":100,"email":"10000@qq.com","id":1,"name":"zzz","qq":"10000","sex":"男"}
自定义工具类:
简化了一点点。
package utils;
import com.alibaba.fastjson.JSON;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @Description:
* @Author: yp
*/
//fastjson
public class JsonUtils {
/**
* 响应结果
* @param response
* @param obj
* @throws IOException
*/
public static void printResult(HttpServletResponse response, Object obj) throws IOException {
response.setContentType("application/json;charset=utf-8");
JSON.writeJSONString(response.getWriter(),obj);
}
/**
* 把json转成对象
* @param request
* @param tClass
* @param <T>
* @return
* @throws IOException
*/
public static <T> T parseJSON2Object(HttpServletRequest request, Class<T> tClass) throws IOException{
// 把表单数据之间转对象
return JSON.parseObject(request.getInputStream(),tClass);
}
}
servlet调用工具类方法:
1.获取json并封装到JavaBean里:
LinkMan linkman =JsonUtils.parseJSON2Object(request,LinkMan.class);
2.将Java对象转成json响应给客户端
JsonUtils.printResult(response,linkman);
//封装了
//1.java对象转json字符串
//String s=JSON.toJSONString(linkman);
//2.将json字符串响应给客户端
//response.getwrite().write(s)
json数组转list集合
注意:不要直接Object对象toString ,这样的大的String可能和标准JSON不同。
要转成json再转成对象
//将Object转JSON数组
String resStr=JSON.toJSONString(obj );
//将JSON数组转List对象集合
List<NewVersionInfo> versionInfoList = JSONObject.parseArray(resStr, NewVersionInfo.class);