【转】http://blog.csdn.net/zhangzeyuaaa/article/details/49914761
- 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]]]]
相关推荐
1. 类型匹配:在反序列化时,JSONLib会尝试将JSON值映射到Java对象的相应字段,因此需要确保JSON数据的类型与Java对象的字段类型相匹配。 2. 避免循环引用:在处理嵌套的对象或集合时,需避免出现循环引用,否则可能...
本篇文章将详细介绍两个流行的Java JSON解析库:Gson和Jsonlib。 ### Gson库 Gson是Google提供的一款强大的JSON库,它可以直接将Java对象转换为JSON字符串,也可以将JSON数据反序列化为Java对象。Gson的优点在于其...
JSON-lib还支持自定义类型转换,通过实现`JsonValueProcessor`接口,你可以定义如何处理特定类型的字段。这在处理日期、自定义对象或其他特殊类型时非常有用。 此外,JSON-lib也能将Java对象转换为XML,以及将XML...
- **数据存储**:在持久化框架如Hibernate中,JSON Lib可以用于将Java对象转换成JSON字符串,方便存储到数据库的JSON字段。 - **前端交互**:后端开发中,通过JSON格式与前端JavaScript进行数据交互,JSON Lib简化了...
4. **XML和JSON之间的转换**:json-lib还支持XML和JSON之间的互转,这对于处理既有XML又有JSON数据的系统非常有用。 5. **自定义转换规则**:用户可以通过实现`JsonConfig`类中的方法,自定义Java对象到JSON的转换...
2. **XML与JSON互转**:json-lib还支持XML与JSON之间的转换,这在处理不同数据格式时非常有用。 3. **自定义序列化**:通过实现JSONAware接口或使用JSONSerializer的transform方法,开发者可以定制JSON序列化过程,...
Java中的json-lib库是处理JSON数据的一个常用工具,它提供了将Java对象转换为JSON字符串以及从JSON字符串反序列化回Java对象的功能。然而,在处理复杂的嵌套数据结构时,如果不小心可能会导致无限循环的问题。 在...
2. **XML与JSON互转**:除了基本的Java对象和JSON之间的转换,json-lib还支持XML和JSON之间的转换。这使得开发者可以在XML和JSON之间灵活选择数据交换格式,取决于具体场景的需求。 3. **兼容性**:json-lib兼容...
4. **类型转换**:`json-lib`提供了一些工具类,如`JSONArray`和`JSONObject`,它们具有丰富的API,可以方便地进行JSON对象的操作,如添加、删除、修改元素,以及获取特定类型的值(如字符串、数字、日期等)。...
JSON-lib允许通过实现`JsonConfig`接口并设置转换策略,来控制特定字段的序列化和反序列化行为。 7. **性能优化**:JSON-lib提供了几种不同的JSON实现,如Jackson、Gson等,可以根据性能需求选择最合适的实现。此外...
默认情况下,`json-lib`会尝试自动映射Java对象的字段到JSON键值对。例如,如果你有一个名为`Person`的类: ```java public class Person { private String name; private int age; // getters and setters } `...
`json-lib`还提供了XML与JSON的互转功能,这对于需要在两者间切换的场景非常有用。 总结来说,`json-lib`是一个强大且易用的工具,它使得在Java中处理JSON变得简单。通过其提供的API,我们可以方便地进行JSON字符...
4. **XML与JSON互转**:json-lib还提供了XML和JSON之间的转换功能,使得两种数据格式可以方便地互换。 5. **性能优化**:虽然JSON库众多,但json-lib在性能方面也有一定的优势,特别是在处理大量数据时。 6. **...
在实际应用中,我们可能需要查询JSON中的特定字段,或者验证JSON是否符合特定格式,这时可以使用JSONPath和JSONSchema。JSONPath类似于XPath,用于从JSON文档中提取数据;JSONSchema则定义了JSON数据的结构,用于...
`json-lib` 是一个 Java 库,它提供了将 Java 对象转换为 JSON 格式以及将 JSON 解析回 Java 对象的功能。这篇博客文章将探讨 `json-lib` 的使用方法和关键特性。 首先,`json-lib` 支持多种类型的 Java 对象转换,...
通过这种方式,Json-lib将在处理日期字段时使用我们定义的格式。 在提供的`date.js`文件中,虽然我们无法直接查看JavaScript代码内容,但可以推测这可能是一个示例脚本,展示了如何在JavaScript环境中处理与日期...
在本例中,"springmvc-json-lib.rar"可能包含了一个完整的SpringMVC项目,其中包含了配置文件、源代码和JSON库的依赖。为了使用这个项目,你需要将其解压,导入到IDE中,配置好项目的依赖,然后就可以运行和调试了。...
2. **JSON对象操作**:`JSONObject` 类是`json_lib` 中的核心类,它提供了添加、获取和修改键值对的方法。`JSONArray` 类则用于表示JSON数组,可以进行元素的增删查改。 3. **类型转换**:`json_lib` 能自动处理...
JSON对象的结构与Java Bean的字段一一对应。需要注意的是,日期类型在转换时默认会显示为null,因为json-lib默认不处理Date对象,如果需要正确序列化日期,可能需要额外的配置或自定义转换器。 4. **自定义转换** ...
这篇博客“使用json-lib进行Java和JSON之间的转换”将介绍如何使用json-lib这个库在Java程序中有效地进行JSON对象与Java对象间的转换。 首先,json-lib是一个Java库,它提供了一系列的方法来将Java对象转换为JSON...