都知道JSONObject可以序列化对象但是能否改掉对象的属性名成呢?比如
public class Student{
private String id;
private String name;
/* get set 方法省略 */
}
Action中读取到所有的记录
List<Student> students = new ArrayList<Student>();
String s = JSONArray.fromObject(students).toString();
System.out.println(s);
输出结果为 [{"id":"1","name":"张三"}]
我想得到这样的结果:[{"id":"1","title":"张三"}] 就是原来属性名称为name,JSON格式想把属性名改成title,请大侠们支招!
public class Student{
private String id;
private String name;
/* get set 方法省略 */
}
Action中读取到所有的记录
List<Student> students = new ArrayList<Student>();
String s = JSONArray.fromObject(students).toString();
System.out.println(s);
输出结果为 [{"id":"1","name":"张三"}]
我想得到这样的结果:[{"id":"1","title":"张三"}] 就是原来属性名称为name,JSON格式想把属性名改成title,请大侠们支招!
或者用replaceAll()函数把name替换成title。。或者用HashMap代替Student
Map map = new HashMap();
map.put("id","xxx");
map.put("title","xxx");List<Map> students = new ArrayList<Map>();
students.add(map);
String s = JSONArray.fromObject(students).toString();
public String getTitle() {
return this.name;
}
然后,
JsonConfig config = new JsonConfig();
config.registerPropertyExclusion(Student.class, "name");
String s = JSONArray.fromObject(students, config).toString();
config.registerJsonPropertyNameProcessor(Student.class, new PropertyNameProcessor() {
@Override
public String processPropertyName(Class beanClass, String name) {
if ("name".equals(name)) {
return "title";
}
return name;
}
});JsonPropertyNameProcessor是java->json的时候,反过来,json->java的叫JavaPropertyNameProcessor