Jsonlib使用PropertyNameProcessor处理属性首字母为大写的情况
2015-11-18 23:18
826 查看
package com.zzj.jsonlib; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import net.sf.json.JSONObject; import net.sf.json.JsonConfig; import net.sf.json.processors.PropertyNameProcessor; import com.zzj.jsonlib.vo.User; import com.zzj.jsonlib.vo.user.Address; import com.zzj.jsonlib.vo.user.Order; /** * 使用PropertyNameProcessor处理属性首字母为大写的情况 * @author lenovo * */ public class PropertyNameProcessorTest { public static void main(String[] args) { User user = new User("001", "123"); List<Order> orderList = new ArrayList<Order>(); Order order = new Order(); Address address = new Address(); address.setState("YN"); order.setAddress(address); order.setOID("123"); order.setOrderStatus("shipped"); orderList.add(order); user.setOrderList(orderList); JsonConfig jsonConfig = new JsonConfig(); PropertyNameProcessor propertyNameProcessor = new PropertyNameProcessor() { @Override public String processPropertyName(Class target, String fieldName) { System.out.println(target); System.out.println(fieldName); return fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1); } }; jsonConfig.registerJsonPropertyNameProcessor(User.class, propertyNameProcessor); jsonConfig.registerJsonPropertyNameProcessor(Order.class, propertyNameProcessor); jsonConfig.registerJsonPropertyNameProcessor(Address.class, propertyNameProcessor); JSONObject jsonObject = JSONObject.fromObject(user, jsonConfig); String jsonStr = jsonObject.toString(); System.out.println(jsonStr); System.out.println("-----------------------------------------------------"); jsonObject = JSONObject.fromObject(jsonStr); jsonConfig = new JsonConfig(); jsonConfig.setRootClass(User.class); Map<String, Class<?>> classMap = new HashMap<String, Class<?>>(); classMap = new HashMap<String, Class<?>>(); classMap.put("OrderList", Order.class); jsonConfig.setClassMap(classMap); propertyNameProcessor = new PropertyNameProcessor() { @Override public String processPropertyName(Class target, String elementName) { System.out.println(target); System.out.println(elementName); //处理第二个字母为大写的情况 if (elementName.length() > 1) { String secondChar = elementName.substring(1, 2); if (secondChar.toUpperCase().equals(secondChar)) { return elementName; } } return elementName.substring(0, 1).toLowerCase() + elementName.substring(1); } }; jsonConfig.registerJavaPropertyNameProcessor(User.class, propertyNameProcessor); jsonConfig.registerJavaPropertyNameProcessor(Order.class, propertyNameProcessor); jsonConfig.registerJavaPropertyNameProcessor(Address.class, propertyNameProcessor); user = (User) JSONObject.toBean(jsonObject, jsonConfig); System.out.println(user); } }
User:
package com.zzj.jsonlib.vo; import java.util.List; import com.zzj.jsonlib.vo.user.Order; public class User { private String Username; private String Password; private List<Order> OrderList; public User() { } public User(String username, String password) { Username = username; Password = password; } public String getUsername() { return Username; } public void setUsername(String username) { Username = username; } public String getPassword() { return Password; } public void setPassword(String password) { Password = password; } public List<Order> getOrderList() { return OrderList; } public void setOrderList(List<Order> orderList) { OrderList = orderList; } @Override public String toString() { return "User [Username=" + Username + ", Password=" + Password + ", OrderList=" + OrderList + "]"; } }
Order:
package com.zzj.jsonlib.vo.user; public class Order { private String OID; private String OrderStatus; private Address Address; public String getOID() { return OID; } public void setOID(String oID) { OID = oID; } public String getOrderStatus() { return OrderStatus; } public void setOrderStatus(String orderStatus) { OrderStatus = orderStatus; } public Address getAddress() { return Address; } public void setAddress(Address address) { Address = address; } @Override public String toString() { return "Order [OID=" + OID + ", OrderStatus=" + OrderStatus + ", Address=" + Address + "]"; } }
Address:
package com.zzj.jsonlib.vo.user; public class Address { private String State; public String getState() { return State; } public void setState(String state) { State = state; } @Override public String toString() { return "Adrress [State=" + State + "]"; } }
输出结果:
class com.zzj.jsonlib.vo.User orderList class com.zzj.jsonlib.vo.user.Order OID class com.zzj.jsonlib.vo.user.Order address class com.zzj.jsonlib.vo.user.Address state class com.zzj.jsonlib.vo.user.Order orderStatus class com.zzj.jsonlib.vo.User password class com.zzj.jsonlib.vo.User username {"OrderList":[{"OID":"123","Address":{"State":"YN"},"OrderStatus":"shipped"}],"Password":"123","Username":"001"} ----------------------------------------------------- class com.zzj.jsonlib.vo.User OrderList class com.zzj.jsonlib.vo.user.Order OID class com.zzj.jsonlib.vo.user.Order Address class com.zzj.jsonlib.vo.user.Address State class com.zzj.jsonlib.vo.user.Order OrderStatus class com.zzj.jsonlib.vo.User Password class com.zzj.jsonlib.vo.User Username User [Username=001, Password=123, OrderList=[Order [OID=123, OrderStatus=shipped, Address=Adrress [State=YN]]]]
相关文章推荐
- js烟花特效
- 第18篇 js高级知识---作用域链
- javascript_DOM 编程艺术学习笔记(六)
- 通过javascript实现1~100内能同时被2和3整除的数并生成如下表格
- JavaScript多线程之HTML5 Web Worker
- 解决eclipse复制粘贴js代码卡死的问题
- jsp include指令
- 如何区分JS中的this?!
- mybatis 处理数组类型及使用Json格式保存数据 JsonTypeHandler and ArrayTypeHandler
- JSTL中var和target 标签的用法
- JavaScript DOM编程艺术—表格的奇数行在点击时实现斑马线效果
- javascript 实现 对XML文件 2级/3级联动操作
- JS打乱数组最高效的方法
- JavaScript基本数据类型和运算
- javascript高级程序设计(三)offsetLeft ,offsetTop,offserHeight,offsetWidth,clientHeight,clientWidth
- ArcGIS API for javascript开发笔记(六)——REST详解及如何使用REST API调用GP服务
- ArcGIS API for javascript开发笔记(六)——REST详解及如何使用REST API调用GP服务
- [LeetCode][JavaScript]Additive Number
- JavaScript中__proto__与prototype的关系
- JS中的原型链