com.feilong.json.processor.CapitalizePropertyNameProcessor Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of feilong Show documentation
Show all versions of feilong Show documentation
feilong is a suite of core and expanded libraries that include utility classes, http, excel,cvs, io classes, and much much more.
/*
* Copyright (C) 2008 feilong
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.feilong.json.processor;
import com.feilong.lib.json.processors.PropertyNameProcessor;
import com.feilong.lib.lang3.StringUtils;
/**
* 将指定类型下面所有属性名字首字母变大写的处理器.
*
* 说明:
*
*
* 我们这边的代码
*
*
* public class CrmAddpointCommand implements Serializable{
*
* // 用户编码
* private String openId;
*
* // 渠道:Tmall - 天猫 JD - 京东
* private String consumptionChannel;
*
* // 淘宝/京东买家账号
* private String buyerId;
*
* // 电商订单编号
* private String orderCode;
*
* // setter getter
* }
*
*
*
* 符合标准的java代码规范,如果直接使用 {@link com.feilong.json.JsonUtil#format(Object)}
*
*
*
* public void testJsonTest(){
* CrmAddpointCommand crmAddpointCommand = new CrmAddpointCommand();
*
* crmAddpointCommand.setBuyerId("123456");
* crmAddpointCommand.setConsumptionChannel("feilongstore");
* crmAddpointCommand.setOpenId("feilong888888ky");
* crmAddpointCommand.setOrderCode("fl123456");
*
* LOGGER.debug(JsonUtil.format(crmAddpointCommand));
* }
*
*
*
* 输出结果:
*
*
* {
* "orderCode": "fl123456",
* "buyerId": "123456",
* "consumptionChannel": "feilongstore",
* "openId": "feilong888888ky"
* }
*
*
*
* 输出的属性大小写和 crmAddpointCommand 对象里面字段的大小写相同,但是对方接口要求首字符要大写:
*
*
*
*
*
* 此时,你可以使用
*
*
*
* public void testJsonTest(){
* CrmAddpointCommand crmAddpointCommand = new CrmAddpointCommand();
*
* crmAddpointCommand.setBuyerId("123456");
* crmAddpointCommand.setConsumptionChannel("feilongstore");
* crmAddpointCommand.setOpenId("feilong888888ky");
* crmAddpointCommand.setOrderCode("fl123456");
*
* //---------------------------------------------------------------
*
* JavaToJsonConfig javaToJsonConfig = new JavaToJsonConfig();
*
* Map{@code , PropertyNameProcessor>} targetClassAndPropertyNameProcessorMap = newHashMap(1);
* targetClassAndPropertyNameProcessorMap.put(CrmAddpointCommand.class, CapitalizePropertyNameProcessor.INSTANCE);
*
* javaToJsonConfig.setJsonTargetClassAndPropertyNameProcessorMap(targetClassAndPropertyNameProcessorMap);
*
* LOGGER.debug(JsonUtil.format(crmAddpointCommand, javaToJsonConfig));
* }
*
*
* 输出结果:
*
*
* {
* "OrderCode": "fl123456",
* "BuyerId": "123456",
* "ConsumptionChannel": "feilongstore",
* "OpenId": "feilong888888ky"
* }
*
*
*
*
* @author feilong
* @see json format 需要支持修改key的名字
* @since 1.9.3
*/
public class CapitalizePropertyNameProcessor implements PropertyNameProcessor{
/** Singleton instance. */
public static final PropertyNameProcessor INSTANCE = new CapitalizePropertyNameProcessor();
/**
* Instantiates a new capitalize property name processor.
*/
private CapitalizePropertyNameProcessor(){
}
//---------------------------------------------------------------
/*
* (non-Javadoc)
*
* @see net.sf.json.processors.PropertyNameProcessor#processPropertyName(java.lang.Class, java.lang.String)
*/
@Override
public String processPropertyName(@SuppressWarnings("rawtypes") Class beanClass,String currentPropertyName){
return StringUtils.capitalize(currentPropertyName);
}
}