package com.csf.practicetest.json;
import com.csf.practicetest.json.entity.RespObj;
import com.csf.practicetest.json.entity.XcfRpoertAnalyseSimplify;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 测试类
*/
public class JsonTest {
public static void main2(String[] args) {
Map<String, Object> obj = new HashMap<String, Object>();
obj.put("k1", "k1v");
obj.put("k2", 2);
try {
obj.put("k3", JsonUtil.parseDate("2013-01-02"));
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(JsonUtil.toJson(obj));
System.out.println(JsonUtil.toJson(obj, "yyyy-MM-dd"));
System.out.println(JsonUtil.toJson(obj));
}
/**
* {"code":"200","type":"SUCCESS","message":[{"name":"2011-2015年公司海外营业收入(单位:亿元)","url":"report/AP201610270029422533/img-0140.png","id":"AP201607260016744779","dt":"20170108010655","p":null},{"name":"2011-2015年公司海外营业收入(单位:亿元)","url":"report/AP201610270029422533/img-0140.png","id":"AP201607260016744779","dt":"20170108010655","p":null}]}
* JavaBean 转为json字符串
*
* @param args
*/
public static void main(String[] args) {
Object message = getMessage();
RespObj res = new RespObj();
res.setCode("200");
res.setType("SUCCESS");
res.setMessage(message);
System.out.println(JsonUtil.toJson(res));
}
public static Object getMessage() {
List<XcfRpoertAnalyseSimplify> list = new ArrayList<XcfRpoertAnalyseSimplify>();
XcfRpoertAnalyseSimplify entity = new XcfRpoertAnalyseSimplify();
entity.setId("AP201605190014926455");
entity.setDt("20170108003552");
entity.setName("公司近年净利润及增长情况");
entity.setUrl("report/AP201605190014926455/img-0139.png");
list.add(entity);
entity.setId("AP201607260016744779");
entity.setDt("20170108010655");
entity.setName("2011-2015年公司海外营业收入(单位:亿元)");
entity.setUrl("report/AP201610270029422533/img-0140.png");
list.add(entity);
return list;
}
}
-----------------------------------------------------------------------------------------------------------------------
package com.csf.practicetest.json;
import com.google.gson.*;
import com.google.gson.reflect.TypeToken;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import java.lang.reflect.Type;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* json 转换工具 由对象转化为json
*
* <!--json使用的包-->
* <dependency>
* <groupId>com.google.code.gson</groupId>
* <artifactId>gson</artifactId>
* <version>2.3.1</version>
* <scope>compile</scope>
* </dependency>
* <dependency>
* <groupId>commons-lang</groupId>
* <artifactId>commons-lang</artifactId>
* <version>2.6</version>
* </dependency>
*/
public class JsonUtil {
private static final Logger logger = Logger.getLogger("JsonUtil.class");
public static final String EMPTY_JSON = "{}";
public static final String EMPTY_JSON_ARRAY = "[]";
private JsonUtil() {
}
private static final GsonBuilder builder = new GsonBuilder();
private static final Gson gson = builder.serializeNulls().serializeSpecialFloatingPointValues()
.registerTypeAdapter(Date.class, new JsonUtil().new JsonDateDeserializer()).create();
/**
* by default,this method allows serialize null-value properties
*/
public static String toJson(Object src) {
if (src == null) {
return EMPTY_JSON;
}
return gson.toJson(src);
}
/**
* default is medium : Mar 8, 2013 12:00:00 AM
* @param obj
* @param dateFormat
* Note that this pattern must abide by the convention provided
* by SimpleDateFormat class.
*/
public static String toJson(Object obj, String dateFormat) {
if (obj == null) {
return EMPTY_JSON;
} else if (StringUtils.isBlank(dateFormat)) {
return gson.toJson(obj);
}
try {
return builder.setDateFormat(dateFormat).serializeSpecialFloatingPointValues().create().toJson(obj);
} catch (Exception e) {
logger.error("Exception for toJson(obj, dateFormat) : " + e.getMessage());
return gson.toJson(obj);
}
}
public static String toJson(Object target, Type targetType) {
String result = EMPTY_JSON;
if (target == null)
return result;
try {
if (targetType != null) {
result = gson.toJson(target, targetType);
} else {
result = gson.toJson(target);
}
} catch (Exception ex) {
logger.error("JsonUtil.toJson(target, targetType) exception, return empty json, exception for "
+ target.toString() + " : " + ex.getMessage());
if (target instanceof Collection || target instanceof Iterator || target instanceof Enumeration
|| target.getClass().isArray()) {
result = EMPTY_JSON_ARRAY;
} else
result = EMPTY_JSON;
}
return result;
}
/**
* to covert a string to a class
* @param json
* @param classOfT
*/
public static <T> T fromJson(String json, Class<T> classOfT) {
return gson.fromJson(json, classOfT);
}
/**
* to covert a string to a class
* @param json
* @param classOfT
*/
public static <T> T fromJson(String json, Class<T> classOfT, String dateFormat) {
return builder.setDateFormat(dateFormat).serializeSpecialFloatingPointValues().create().fromJson(json, classOfT);
}
public static <T> T fromJson(String json, Type type) {
return gson.fromJson(json, type);
}
/**
* to covert a JsonElement to a class
* @param json
* @param classOfT
*/
public static <T> T fromJson(JsonElement jsonElem, Class<T> classOfT) {
return gson.fromJson(jsonElem, classOfT);
}
/**
* convert json string to list
* @param jsonStr
* @param type
*/
public static List<?> jsonToList(String json, Type type) {
List<?> objList = gson.fromJson(json, type);
return objList;
}
/**
* convert json to map
* @param jsonStr
*/
public static Map<?, ?> jsonToMap(String json) {
Type type = new TypeToken<Map<?, ?>>() {
}.getType();
Map<?, ?> objMap = gson.fromJson(json, type);
return objMap;
}
public static void main(String[] args) {
Map<String, Object> obj = new HashMap<String, Object>();
obj.put("k1", "k1v");
obj.put("k2", 2);
try {
obj.put("k3", parseDate("2013-01-02"));
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(JsonUtil.toJson(obj));
System.out.println(JsonUtil.toJson(obj, "yyyy-MM-dd"));
System.out.println(JsonUtil.toJson(obj));
}
public class JsonDateDeserializer implements JsonDeserializer<Date> {
public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
throws JsonParseException {
String s = json.getAsJsonPrimitive().getAsString();
try {
return parseDate(s);
} catch (ParseException e) {
throw new JsonParseException(e);
}
}
}
public static Date parseDate(String s) throws ParseException {
if (s.indexOf("-") == 4) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
return df.parse(s);
}
String value = s;
if (!value.endsWith("d")) {
if (value.charAt(2) == '/')
return new SimpleDateFormat("MM/dd/yy").parse(value);
else
return new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy").parse(value);
} else {
value = value.substring(0, value.length() - 1);
if (value != null) {
if (value.startsWith("\"") && value.endsWith("\""))
return new SimpleDateFormat("\"ddMMMyy\"").parse(value);
else if (value.startsWith("'") && value.endsWith("'"))
return new SimpleDateFormat("''ddMMMyy''").parse(value);
else
throw new ParseException("incorrect format for Date(" + s + "): correct format is 'ddMMMyy'd", 0);
}
}
return null;
}
}
-----------------------------------------------------------------------------------------------------------------------
package com.csf.practicetest.json.entity;
import java.io.Serializable;
public class RespObj implements Serializable {
private String code;
private String type;
private Object message;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getType() {
return type;
}
public Object getMessage() {
return message;
}
public void setMessage(Object message) {
this.message = message;
}
public void setType(String type) {
this.type = type;
}
}
-----------------------------------------------------------------------------------
package com.csf.practicetest.json.entity;
/**
* @author fenglei.ma 2017年1月6日 16:52
*/
public class XcfRpoertAnalyseSimplify {
private String name;// 图片名称
private String url;// 图片url
private String id;// 图片编号
private String dt;
private String p;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getDt() {
return dt;
}
public void setDt(String dt) {
this.dt = dt;
}
public String getP() {
return p;
}
public void setP(String p) {
this.p = p;
}
@Override
public String toString() {
return "XcfRpoertAnalyseSimplify [name=" + name + ", url=" + url + ", id=" + id + ", dt=" + dt + ", p=" + p
+ "]";
}
}