//这是把String强转对象的一个工具类
package com.ane.luban.web.controller.claims;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import java.io.IOException;
import java.io.Serializable;
import java.text.SimpleDateFormat;
public class JsonHelp
implements Serializable
{
private static final ObjectMapper objectMapper = new ObjectMapper();
private static boolean isPretty = false;
public static String convertObjectToJson(Object obj
)
{
String jsonString
= "";
try {
jsonString
= objectMapper.writeValueAsString(obj
);
} catch (IOException e
) {
e
.printStackTrace();
}
return jsonString
;
}
public static Object convertJsonToObject(String jsonString
, Class<?> clazz
)
{
if ((jsonString
== null) || ("".equals(jsonString
)))
return null;
try
{
return objectMapper.readValue(jsonString
, clazz
);
} catch (IOException e
) {
e
.printStackTrace();
}
return null;
}
public static <T
> T
convertJsonToGenericObject(String jsonString
, TypeReference<T
> typeReference
)
{
if ((jsonString
== null) || ("".equals(jsonString
))) {
return null;
}
try
{
return objectMapper.readValue(jsonString
, typeReference
);
} catch (Exception e
) {
e
.printStackTrace();
}
return null;
}
static
{
if (isPretty) {
objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
}
objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
objectMapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
objectMapper.configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true);
}
}
//调用方式
SubmenuQuery query
= (SubmenuQuery) JacksonHelper.convertJsonToObject
(params
, SubmenuQuery.class);
//
query为定义的对象,params为String值,注意String的值必须要与类定义的变量名一一对应不然强转会不成功
param必须要拼接成键值对;
例:
{"isChecked":0,"startTime":"2017-05-04 00:00:00","endTime":"2017-05-06 23:59:59","status":"0","arbType":"","claimsStatus":"2","arbDutyId":"","siteId":"","provinceId":"","page":0,"rows":50}
js拼接键值对:
var params = {
isChecked: "1",
startTime: "2012-11-11",
endTime: "2012-11-13",
status: 1,
arbType: 114,
claimsStatus: 1,
arbDutyId: 354,
siteId: 678,
provinceId: 987
}; //定义对象接收键值对
params = JSON.stringify(params);
window.location = basePath+"submenuController/export?params="+encodeURI(params); //通过JSON中
stringify方法把params转成字符串类型
encodeURI //该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码,这是为了解决param中非法字符的问题