`

【转】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]]]]  
分享到:
评论

相关推荐

    jsonlib.rar

    1. 类型匹配:在反序列化时,JSONLib会尝试将JSON值映射到Java对象的相应字段,因此需要确保JSON数据的类型与Java对象的字段类型相匹配。 2. 避免循环引用:在处理嵌套的对象或集合时,需避免出现循环引用,否则可能...

    Gson和Jsonlib需要的jar包

    本篇文章将详细介绍两个流行的Java JSON解析库:Gson和Jsonlib。 ### Gson库 Gson是Google提供的一款强大的JSON库,它可以直接将Java对象转换为JSON字符串,也可以将JSON数据反序列化为Java对象。Gson的优点在于其...

    JSON-lib框架,转换JSON、XML不再困难

    JSON-lib还支持自定义类型转换,通过实现`JsonValueProcessor`接口,你可以定义如何处理特定类型的字段。这在处理日期、自定义对象或其他特殊类型时非常有用。 此外,JSON-lib也能将Java对象转换为XML,以及将XML...

    json-lib-2.3-jdk15基础jar包合辑

    - **数据存储**:在持久化框架如Hibernate中,JSON Lib可以用于将Java对象转换成JSON字符串,方便存储到数据库的JSON字段。 - **前端交互**:后端开发中,通过JSON格式与前端JavaScript进行数据交互,JSON Lib简化了...

    json-lib-2.4-jdk15.jar

    4. **XML和JSON之间的转换**:json-lib还支持XML和JSON之间的互转,这对于处理既有XML又有JSON数据的系统非常有用。 5. **自定义转换规则**:用户可以通过实现`JsonConfig`类中的方法,自定义Java对象到JSON的转换...

    json-lib-2.2.2-jdk15.jar

    2. **XML与JSON互转**:json-lib还支持XML与JSON之间的转换,这在处理不同数据格式时非常有用。 3. **自定义序列化**:通过实现JSONAware接口或使用JSONSerializer的transform方法,开发者可以定制JSON序列化过程,...

    java json-lib解决无循环的探索例子

    Java中的json-lib库是处理JSON数据的一个常用工具,它提供了将Java对象转换为JSON字符串以及从JSON字符串反序列化回Java对象的功能。然而,在处理复杂的嵌套数据结构时,如果不小心可能会导致无限循环的问题。 在...

    json-lib相关所有包

    2. **XML与JSON互转**:除了基本的Java对象和JSON之间的转换,json-lib还支持XML和JSON之间的转换。这使得开发者可以在XML和JSON之间灵活选择数据交换格式,取决于具体场景的需求。 3. **兼容性**:json-lib兼容...

    json-lib-2.23

    4. **类型转换**:`json-lib`提供了一些工具类,如`JSONArray`和`JSONObject`,它们具有丰富的API,可以方便地进行JSON对象的操作,如添加、删除、修改元素,以及获取特定类型的值(如字符串、数字、日期等)。...

    JSON-lib

    JSON-lib允许通过实现`JsonConfig`接口并设置转换策略,来控制特定字段的序列化和反序列化行为。 7. **性能优化**:JSON-lib提供了几种不同的JSON实现,如Jackson、Gson等,可以根据性能需求选择最合适的实现。此外...

    使用json-lib自定义复杂类型转换为Json字符串

    默认情况下,`json-lib`会尝试自动映射Java对象的字段到JSON键值对。例如,如果你有一个名为`Person`的类: ```java public class Person { private String name; private int age; // getters and setters } `...

    json_lib使用实例:java对象与json字符串的互转

    `json-lib`还提供了XML与JSON的互转功能,这对于需要在两者间切换的场景非常有用。 总结来说,`json-lib`是一个强大且易用的工具,它使得在Java中处理JSON变得简单。通过其提供的API,我们可以方便地进行JSON字符...

    json-lib-2.3-jdk15.jar和它的源码包

    4. **XML与JSON互转**:json-lib还提供了XML和JSON之间的转换功能,使得两种数据格式可以方便地互换。 5. **性能优化**:虽然JSON库众多,但json-lib在性能方面也有一定的优势,特别是在处理大量数据时。 6. **...

    java对象转换为json字符串或字符串数组

    在实际应用中,我们可能需要查询JSON中的特定字段,或者验证JSON是否符合特定格式,这时可以使用JSONPath和JSONSchema。JSONPath类似于XPath,用于从JSON文档中提取数据;JSONSchema则定义了JSON数据的结构,用于...

    json-lib 使用总结--java对象转json字符串

    `json-lib` 是一个 Java 库,它提供了将 Java 对象转换为 JSON 格式以及将 JSON 解析回 Java 对象的功能。这篇博客文章将探讨 `json-lib` 的使用方法和关键特性。 首先,`json-lib` 支持多种类型的 Java 对象转换,...

    关于Json-lib对日期型的转换解决方法

    通过这种方式,Json-lib将在处理日期字段时使用我们定义的格式。 在提供的`date.js`文件中,虽然我们无法直接查看JavaScript代码内容,但可以推测这可能是一个示例脚本,展示了如何在JavaScript环境中处理与日期...

    springmvc-json-lib.rar

    在本例中,"springmvc-json-lib.rar"可能包含了一个完整的SpringMVC项目,其中包含了配置文件、源代码和JSON库的依赖。为了使用这个项目,你需要将其解压,导入到IDE中,配置好项目的依赖,然后就可以运行和调试了。...

    json_lib JSON格式

    2. **JSON对象操作**:`JSONObject` 类是`json_lib` 中的核心类,它提供了添加、获取和修改键值对的方法。`JSONArray` 类则用于表示JSON数组,可以进行元素的增删查改。 3. **类型转换**:`json_lib` 能自动处理...

    java利用json-lib操作json

    JSON对象的结构与Java Bean的字段一一对应。需要注意的是,日期类型在转换时默认会显示为null,因为json-lib默认不处理Date对象,如果需要正确序列化日期,可能需要额外的配置或自定义转换器。 4. **自定义转换** ...

    使用json-lib进行Java和JSON之间的转换

    这篇博客“使用json-lib进行Java和JSON之间的转换”将介绍如何使用json-lib这个库在Java程序中有效地进行JSON对象与Java对象间的转换。 首先,json-lib是一个Java库,它提供了一系列的方法来将Java对象转换为JSON...

Global site tag (gtag.js) - Google Analytics