【转】JSON Lib 修改字段名称

【转】http://blog.csdn.net/zhangzeyuaaa/article/details/49914761

  1. package com.zzj.jsonlib;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.HashMap;  
  5. import java.util.List;  
  6. import java.util.Map;  
  7.   
  8. import net.sf.json.JSONObject;  
  9. import net.sf.json.JsonConfig;  
  10. import net.sf.json.processors.PropertyNameProcessor;  
  11.   
  12. import com.zzj.jsonlib.vo.User;  
  13. import com.zzj.jsonlib.vo.user.Address;  
  14. import com.zzj.jsonlib.vo.user.Order;  
  15.   
  16. /** 
  17.  * 使用PropertyNameProcessor处理属性首字母为大写的情况 
  18.  * @author lenovo 
  19.  * 
  20.  */  
  21. public class PropertyNameProcessorTest {  
  22.     public static void main(String[] args) {  
  23.         User user = new User("001""123");  
  24.         List<Order> orderList = new ArrayList<Order>();  
  25.         Order order = new Order();  
  26.         Address address = new Address();  
  27.         address.setState("YN");  
  28.         order.setAddress(address);  
  29.         order.setOID("123");  
  30.         order.setOrderStatus("shipped");  
  31.         orderList.add(order);  
  32.         user.setOrderList(orderList);  
  33.           
  34.         JsonConfig jsonConfig = new JsonConfig();  
  35.         PropertyNameProcessor propertyNameProcessor = new PropertyNameProcessor() {  
  36.             @Override  
  37.             public String processPropertyName(Class target, String fieldName) {  
  38.                 System.out.println(target);  
  39.                 System.out.println(fieldName);  
  40.                 return fieldName.substring(01).toUpperCase() + fieldName.substring(1);  
  41.             }  
  42.         };  
  43.         jsonConfig.registerJsonPropertyNameProcessor(User.class, propertyNameProcessor);  
  44.         jsonConfig.registerJsonPropertyNameProcessor(Order.class, propertyNameProcessor);  
  45.         jsonConfig.registerJsonPropertyNameProcessor(Address.class, propertyNameProcessor);  
  46.           
  47.         JSONObject jsonObject = JSONObject.fromObject(user, jsonConfig);  
  48.         String jsonStr = jsonObject.toString();  
  49.         System.out.println(jsonStr);  
  50.           
  51.         System.out.println("-----------------------------------------------------");  
  52.           
  53.         jsonObject = JSONObject.fromObject(jsonStr);  
  54.         jsonConfig = new JsonConfig();  
  55.           
  56.         jsonConfig.setRootClass(User.class);  
  57.           
  58.         Map<String, Class<?>> classMap = new HashMap<String, Class<?>>();  
  59.         classMap = new HashMap<String, Class<?>>();  
  60.         classMap.put("OrderList", Order.class);  
  61.         jsonConfig.setClassMap(classMap);  
  62.           
  63.         propertyNameProcessor = new PropertyNameProcessor() {  
  64.             @Override  
  65.             public String processPropertyName(Class target, String elementName) {  
  66.                 System.out.println(target);  
  67.                 System.out.println(elementName);  
  68.                   
  69.                 //处理第二个字母为大写的情况  
  70.                 if (elementName.length() > 1) {  
  71.                     String secondChar = elementName.substring(12);  
  72.                     if (secondChar.toUpperCase().equals(secondChar)) {  
  73.                         return elementName;  
  74.                     }  
  75.                 }  
  76.                 return elementName.substring(01).toLowerCase() + elementName.substring(1);  
  77.             }  
  78.         };  
  79.         jsonConfig.registerJavaPropertyNameProcessor(User.class, propertyNameProcessor);  
  80.         jsonConfig.registerJavaPropertyNameProcessor(Order.class, propertyNameProcessor);  
  81.         jsonConfig.registerJavaPropertyNameProcessor(Address.class, propertyNameProcessor);  
  82.           
  83.         user = (User) JSONObject.toBean(jsonObject, jsonConfig);  
  84.         System.out.println(user);  
  85.     }  
  86. }  

User:

[java]  view plain  copy
 
 print ?
  1. package com.zzj.jsonlib.vo;  
  2.   
  3. import java.util.List;  
  4.   
  5. import com.zzj.jsonlib.vo.user.Order;  
  6.   
  7. public class User {  
  8.     private String Username;  
  9.     private String Password;  
  10.       
  11.     private List<Order> OrderList;  
  12.       
  13.     public User() {  
  14.     }  
  15.   
  16.     public User(String username, String password) {  
  17.         Username = username;  
  18.         Password = password;  
  19.     }  
  20.   
  21.     public String getUsername() {  
  22.         return Username;  
  23.     }  
  24.   
  25.     public void setUsername(String username) {  
  26.         Username = username;  
  27.     }  
  28.   
  29.     public String getPassword() {  
  30.         return Password;  
  31.     }  
  32.   
  33.     public void setPassword(String password) {  
  34.         Password = password;  
  35.     }  
  36.   
  37.     public List<Order> getOrderList() {  
  38.         return OrderList;  
  39.     }  
  40.   
  41.     public void setOrderList(List<Order> orderList) {  
  42.         OrderList = orderList;  
  43.     }  
  44.   
  45.     @Override  
  46.     public String toString() {  
  47.         return "User [Username=" + Username + ", Password=" + Password  
  48.                 + ", OrderList=" + OrderList + "]";  
  49.     }  
  50.   
  51.   
  52. }  

 

Order:

[java]  view plain  copy
 
 print ?
  1. package com.zzj.jsonlib.vo.user;  
  2.   
  3. public class Order {  
  4.     private String OID;  
  5.     private String OrderStatus;  
  6.     private Address Address;  
  7.   
  8.     public String getOID() {  
  9.         return OID;  
  10.     }  
  11.   
  12.     public void setOID(String oID) {  
  13.         OID = oID;  
  14.     }  
  15.   
  16.     public String getOrderStatus() {  
  17.         return OrderStatus;  
  18.     }  
  19.   
  20.     public void setOrderStatus(String orderStatus) {  
  21.         OrderStatus = orderStatus;  
  22.     }  
  23.   
  24.     public Address getAddress() {  
  25.         return Address;  
  26.     }  
  27.   
  28.     public void setAddress(Address address) {  
  29.         Address = address;  
  30.     }  
  31.   
  32.     @Override  
  33.     public String toString() {  
  34.         return "Order [OID=" + OID + ", OrderStatus=" + OrderStatus  
  35.                 + ", Address=" + Address + "]";  
  36.     }  
  37.   
  38. }  

 

Address:

[java]  view plain  copy
 
 print ?
  1. package com.zzj.jsonlib.vo.user;  
  2.   
  3. public class Address {  
  4.     private String State;  
  5.   
  6.     public String getState() {  
  7.         return State;  
  8.     }  
  9.   
  10.     public void setState(String state) {  
  11.         State = state;  
  12.     }  
  13.   
  14.     @Override  
  15.     public String toString() {  
  16.         return "Adrress [State=" + State + "]";  
  17.     }  
  18.       
  19.       
  20.       
  21. }  

 

输出结果:

[plain]  view plain  copy
 
 print ?
  1. class com.zzj.jsonlib.vo.User  
  2. orderList  
  3. class com.zzj.jsonlib.vo.user.Order  
  4. OID  
  5. class com.zzj.jsonlib.vo.user.Order  
  6. address  
  7. class com.zzj.jsonlib.vo.user.Address  
  8. state  
  9. class com.zzj.jsonlib.vo.user.Order  
  10. orderStatus  
  11. class com.zzj.jsonlib.vo.User  
  12. password  
  13. class com.zzj.jsonlib.vo.User  
  14. username  
  15. {"OrderList":[{"OID":"123","Address":{"State":"YN"},"OrderStatus":"shipped"}],"Password":"123","Username":"001"}  
  16. -----------------------------------------------------  
  17. class com.zzj.jsonlib.vo.User  
  18. OrderList  
  19. class com.zzj.jsonlib.vo.user.Order  
  20. OID  
  21. class com.zzj.jsonlib.vo.user.Order  
  22. Address  
  23. class com.zzj.jsonlib.vo.user.Address  
  24. State  
  25. class com.zzj.jsonlib.vo.user.Order  
  26. OrderStatus  
  27. class com.zzj.jsonlib.vo.User  
  28. Password  
  29. class com.zzj.jsonlib.vo.User  
  30. Username  
  31. User [Username=001, Password=123, OrderList=[Order [OID=123, OrderStatus=shipped, Address=Adrress [State=YN]]]]  

猜你喜欢

转载自ln-software.iteye.com/blog/2332122