json串解析,成员变量大写字母开头

本文详细介绍了使用Jackson库处理JSON字串中大写字母开头的键问题的方法,包括自定义命名策略类和不同场景下的对象转换技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

com.fasterxml.jackson.databind.ObjectMapper


 jackson可以方便地实现对象和json字串的转换,但是如果json字串的键是大写字母开头的话,默认情况下会出错。如何处理在这里有说明:http://unmi.cc/jackson-java-object-json-string。使用ObjectMapper的setPropertyNamingStrategy方法。首先自己定义个描述大写字母开头的类

import com.fasterxml.jackson.databind.PropertyNamingStrategy.PropertyNamingStrategyBase;

public class UpperCasePropertyNamingStrategy extends PropertyNamingStrategyBase {

private static final long serialVersionUID = -5054105970777634248L;

@Override
public String translate(String propertyName) {
String name = propertyName.replaceAll("^\\w", propertyName.toUpperCase().substring(0,1));
return name;
}

}
这样使用
import com.fasterxml.jackson.databind.ObjectMapper;
...
ObjectMapper mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(new UpperCasePropertyNamingStrategy());
mapper.setDateFormat(...);
DataParams p = mapper.readValue(source, DataParams.class);

有时不是直接返回一个对象,而是一个对象数据或集合,这时可以这样写
import com.fasterxml.jackson.core.type.TypeReference;
...
DataParams jsonArray = mapper.readValue(source, DataParams[].class);
List<DataParams > jsonArray = mapper.readValue(source, new TypeReference<List<DataParams >>() {});
或者
List<DataParams > jsonArray = mapper.readValue(source, mapper.getTypeFactory().constructCollectionType(List.class, DataParams .class));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值