Jsonlib使用PropertyNameProcessor处理属性首字母为大写的情况

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]]]]



  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值