<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.41</version>
</dependency>
JSONObject.toJSONString(obj);
JSONObject.toJSONString(obj, SerializeFilter):SerializeFilter可用来过滤掉不需要转成json的属性
SerializeFilter filter = new PropertyFilter() {@Overridepublic boolean apply(Object arg0, String arg1, Object arg2) {if ("id".equals(arg1)) {return false;}return true;}};
//方式一、使用注解
@JSONField(format="yyyy-MM-dd")
private Date birthday;
//方式二、配置默认日期格式化
JSONObject.DEFFAULT_DATE_FORMAT="yyyy-MM-dd";
SerializerFeature.WriteDateUseDateFormat
JSONObject.toJSON(list);
JSONArray.toJSON(list);
JSON.toJSON(list);
json2.toJSONString();
json2.toString();
JSONObject.toJavaObject(json, clazz);
JSON.toJavaObject(json, clazz);
JSONArray.toJavaObject(json, clazz);
json对象.toJavaObject(clazz);
String userJsonStr = "{'id':'111','username':'tom','password':'123456','birth_day':'1990-09-09'"
String userJsonStr = "[{'id':'111','username':'tom','password':'123456','birthday':'1990-09-09',"
+ "'car':{'cid':'1111','cname':'BMW740Li','color':'red'},"
+ "'orders':[{'oid':'1','oname':'订单一'},{'oid':'2','oname':'订单二'}]},"
+ "{'id':'112','username':'jerry','password':'123456','birthday':'1990-08-08',"
+ "'car':{'cid':'1112','cname':'BenzS600L','color':'white'},"
+ "'orders':[{'oid':'1','oname':'订单一'},{'oid':'2','oname':'订单二'}]}]";
List<User> list = JSON.parseArray(userJsonStr, User.class);
List<User> list2 = JSON.parseObject(userJsonStr,new TypeReference<List<User>>(){});
String userJsonStr = "{'user':{'id':'111','username':'tom','password':'123456','birthday':'1990-09-09',"
+ "'car':{'cid':'1111','cname':'BMW740Li','color':'red'},"
+ "'orders':[{'oid':'1','oname':'订单一'},{'oid':'2','oname':'订单二'}]}}";
Map<String, User> map = JSON.parseObject(userJsonStr, new TypeReference<Map<String, User>>(){});
String userJsonStr = "{'id':'111','username':'tom','password':'123456','birth_day':'1990-09-09'"
+ ",'car':{'cid':'1111','cname':'BMW740Li','color':'red'},"
+ "'orders':[{'oid':'1','oname':'订单一'},{'oid':'2','oname':'订单二'}]}";
JSONObject jsonObject = JSON.parseObject(userJsonStr);
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.2</version>
</dependency>
ObjectMapper objectMapper = new ObjectMapper();
String valueAsString = objectMapper.writeValueAsString(user);
// 处理过滤属性
// FilterProvider fp = new SimpleFilterProvider().addFilter("productFilter",
// SimpleBeanPropertyFilter.filterOutAllExcept("id", "name")); //只包含id与name
FilterProvider fp = new SimpleFilterProvider().addFilter("productFilter",
SimpleBeanPropertyFilter.serializeAllExcept("id", "name")); //不包含id与name
mapper.setFilters(fp);//定义完这些后还需要在对应的类上使用@JsonFilter("productFilter")注解
//@JsonIgnoreProperties({ "id", "releaseDate" })
public class Product {
// @JsonIgnore
private int id;
private String name;
private double price;
objectMapper.setDateFormat(new SimpleDateFormat("yyyy年MM月dd日"));
@JsonFormat(pattern="yyyy-MM-dd")
private Date birthday;
String userJsonStr = "{\"id\":\"111\",\"username\":\"tom\",\"password\":\"123456\",\"birthday\":\"1990-09-09\""
+ ",\"car\":{\"cid\":\"1111\",\"cname\":\"BMW740Li\",\"color\":\"red\"},"
+ "\"orders\":[{\"oid\":\"1\",\"oname\":\"订单一\"},{\"oid\":\"2\",\"oname\":\"订单二\"}]}";
try {
ObjectMapper objectMapper = new ObjectMapper();
User user = objectMapper.readValue(userJsonStr, User.class);
User user2 = objectMapper.readValue(userJsonStr, new TypeReference<User>() {});
} catch (IOException e) {
e.printStackTrace();
}
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk13</classifier>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk13-javadoc</classifier>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk13-sources</classifier>
</dependency>
JSONObject jsonObject = JSONObject.fromObject(arr);
JSONArray jsonArray = JSONArray.fromObject(arr);
JsonConfig jsonConfig = new JsonConfig();
// 方式一:
jsonConfig.setExcludes(new String[]{"id","username"});
// 方式二:
jsonConfig.setJsonPropertyFilter(new PropertyFilter() {
@Override
public boolean apply(Object arg0, String name, Object arg2) {
if("id".equals(name)){
return true;
}
if("username".equals(name)){
return true;
}
return false;
}
}); JSONObject jsonObject = JSONObject.fromObject(user,jsonConfig);
// 方式一、处理指定列
jsonConfig.registerJsonValueProcessor("birthday", new JsonValueProcessor() {
@Override
public Object processArrayValue(Object value, JsonConfig jsonConfig) {
return null;
}
@Override
public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
return simpleDateFormat.format(value);
}});
// 方式二、处理指定类型
jsonConfig.registerJsonValueProcessor(Date.class, new JsonValueProcessor() {
@Override
public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
return simpleDateFormat.format(value);
}
@Override
public Object processArrayValue(Object value, JsonConfig jsonConfig) {
return null;
}
});
jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
String userJsonStr = "{'id':'111','username':'tom','password':'123456','birthday':'1990-09-09'"
+ ",'car':{'cid':'1111','cname':'BMW740Li','color':'red'},"
+ "'orders':[{'oid':'1','oname':'订单一'},{'oid':'2','oname':'订单二'}]}";
JSONObject jsonObject = JSONObject.fromObject(userJsonStr);
Map<String, Class> map = new HashMap<String,Class>();
map.put("orders", Order.class);//User类中有一个orders属性List<Order>,Jsonlib在解析它的时候不知道应该如何转换,这里是明确的告诉jsonlib如何去处理orders属性的值。
User user = (User) JSONObject.toBean(jsonObject, User.class,map);
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.2</version>
</dependency>
Gson gson = new GsonBuilder().create();
String userTest = gson.toJson(user);
// gson解析时会默认忽略没有值的属性,调用serializeNulls(),gson解析的字符串中没有值的属性也会展示出来
Gson gson = new GsonBuilder().serializeNulls().create();
String userTest = gson.toJson(user);
// 调用excludeFieldsWithoutExposeAnnotation(),Gson在解析成json字符串时,只会解析那些有@Expost注解的字段
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
String userTest = gson.toJson(user);
// 指定gson在解析时,不解析指定修饰符的属性。不过这个基本没什么用,因为我们javaBean的属性的修饰符一般默认都是private
Gson gson = new GsonBuilder().excludeFieldsWithModifiers(Modifier.PROTECTED).create();
String userTest = gson.toJson(user);
// 使用ExclusionStrategy定制字段排除策略
new GsonBuilder().setExclusionStrategies(new ExclusionStrategy() {
@Override
// 根据属性名称忽略
public boolean shouldSkipField(FieldAttributes f) {
if("id".equals(f.getName())){
return true;//获取id属性
}
return false;
}
@Override
//根据属性类型忽略
public boolean shouldSkipClass(Class<?> clazz) {
return false;
}
});
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
String userTest = gson.toJson(user);
String userJsonStr = "{\"id\":\"111\",\"username\":\"tom\",\"password\":\"123456\",\"birthday\":\"1990-09-09\""
+ ",\"car\":{\"cid\":\"1111\",\"cname\":\"BMW740Li\",\"color\":\"red\"},"
+ "\"orders\":[{\"oid\":\"1\",\"oname\":\"订单一\"},{\"oid\":\"2\",\"oname\":\"订单二\"}]}";
Gson gson = new GsonBuilder().create();
User user = gson.fromJson(userJsonStr, User.class);
2.8 KB, 下载次数: 109
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |