JSONObject.parseObject转下划线
时间: 2025-03-03 10:32:06 浏览: 37
### 使用 `JSONObject.parseObject` 实现驼峰命名到下划线命名的转换
为了实现 Java 对象中的驼峰命名属性与 JSON 字符串中下划线命名属性之间的相互转换,可以采用 FastJSON 提供的功能来完成这一需求。具体来说,可以通过配置全局序列化器或反序列化器的方式达到目的。
当使用 `JSONObject.parseObject` 方法解析 JSON 数据并希望自动处理这种命名风格的变化时,一种方法是在应用启动阶段设定默认的行为模式:
```java
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.parser.ParserConfig;
public class Application {
static {
ParserConfig.getGlobalInstance().setPropertyNamingStrategy(com.alibaba.fastjson.PropertyNamingStrategy.SnakeCase);
}
}
```
上述代码片段设置了全局解析配置使得所有的 JSON 解析操作都将遵循蛇形命名约定[^3]。
对于特定的对象实例,则可以在类定义处指定该行为而不影响其他部分:
```java
import com.alibaba.fastjson.annotation.JSONType;
@JSONType(naming = com.alibaba.fastjson.PropertyNamingStrategy.SnakeCase)
class User{
private String userName;
private int userAge;
// getters and setters...
@Override
public String toString() {
return "User{" +
"userName='" + userName + '\'' +
", userAge=" + userAge +
'}';
}
}
// 测试用例
public class Main {
public static void main(String[] args){
String jsonString = "{\"user_name\":\"张三\",\"user_age\":20}";
User user = JSON.parseObject(jsonString, User.class);
System.out.println(user.toString());
}
}
```
这段程序展示了如何利用 `@JSONType` 注解配合 `PropertyNamingStrategy.SnakeCase` 来确保即使输入的是带有下划线分隔符键名的 JSON 文本也能被正确映射至对应的 Java 属性上。
另外,如果仅需临时改变某次调用的行为而不想修改任何已有代码结构的话,还可以直接在调用 `parseObject()` 的时候传递额外参数来进行控制:
```java
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.parser.Feature;
...
String jsonString = "{\"user_name\":\"李四\",\"user_age\":22}";
User user = JSON.parseObject(
jsonString,
new TypeReference<User>() {},
Feature.InitBeanWithNull,
Feature.SupportNonPublicField,
Feature.UseBigDecimal
).setNamingConvention(PropertyNamingStrategy.SnakeCase);
```
这种方式允许更加灵活地调整每次 JSON 转换的具体选项。
阅读全文
相关推荐
















