Jackson json 到映射和驼峰式键名

js

1个回答

写回答

JS
JS

使用Jackson库可以很方便地将JSON数据映射到Java对象中,并且还可以将JSON中的下划线风格的键名转换为驼峰式。这在处理第三方API返回的JSON数据时非常有用。下面将介绍如何使用Jackson库实现这一功能,并提供一个简单的案例代码。

将JSON数据映射到Java对象

首先,我们需要定义一个Java类来表示JSON数据的结构。这个类的属性应该与JSON中的键名一一对应。然后,使用Jackson库的ObjectMapper类可以很方便地将JSON数据映射到这个Java对象中。

下面是一个示例JSON数据:

JSon

{

"user_name": "John Doe",

"emAIl_address": "johndoe@example.com",

"phone_number": "1234567890"

}

我们定义一个User类来表示这个JSON数据的结构:

Java

public class User {

private String userName;

private String emAIlAddress;

private String phoneNumber;

// 省略getter和setter方法

}

然后,我们可以使用Jackson库将JSON数据映射到User对象中:

Java

import com.fasterXML.jackson.databind.ObjectMapper;

public class MAIn {

public static void mAIn(String[] args) throws Exception {

String JSon = "{\"user_name\":\"John Doe\",\"emAIl_address\":\"johndoe@example.com\",\"phone_number\":\"1234567890\"}";

ObjectMapper objectMapper = new ObjectMapper();

User user = objectMapper.readValue(JSon, User.class);

System.out.println(user.getUserName()); // 输出: John Doe

System.out.println(user.getEmAIlAddress()); // 输出: johndoe@example.com

System.out.println(user.getPhoneNumber()); // 输出: 1234567890

}

}

将下划线风格的键名转换为驼峰式

有时,我们从第三方API获取的JSON数据中的键名可能采用下划线风格,而我们想在Java对象中使用驼峰式的属性名。Jackson库提供了一个注解来实现这一转换。

我们可以在User类的属性上添加@JSonProperty注解,并指定相应的键名。如果键名与属性名不一致,Jackson库会自动进行转换。

Java

import com.fasterXML.jackson.annotation.JSonProperty;

public class User {

@JSonProperty("user_name")

private String userName;

@JSonProperty("emAIl_address")

private String emAIlAddress;

@JSonProperty("phone_number")

private String phoneNumber;

// 省略getter和setter方法

}

这样,当我们将JSON数据映射到User对象时,Jackson库会自动将下划线风格的键名转换为驼峰式的属性名。

Java

import com.fasterXML.jackson.databind.ObjectMapper;

public class MAIn {

public static void mAIn(String[] args) throws Exception {

String JSon = "{\"user_name\":\"John Doe\",\"emAIl_address\":\"johndoe@example.com\",\"phone_number\":\"1234567890\"}";

ObjectMapper objectMapper = new ObjectMapper();

User user = objectMapper.readValue(JSon, User.class);

System.out.println(user.getUserName()); // 输出: John Doe

System.out.println(user.getEmAIlAddress()); // 输出: johndoe@example.com

System.out.println(user.getPhoneNumber()); // 输出: 1234567890

}

}

本文介绍了如何使用Jackson库将JSON数据映射到Java对象,并将下划线风格的键名转换为驼峰式的属性名。通过使用Jackson库提供的注解,我们可以轻松地实现这一功能。这在处理第三方API返回的JSON数据时非常有用。

示例代码:

Java

import com.fasterXML.jackson.annotation.JSonProperty;

import com.fasterXML.jackson.databind.ObjectMapper;

public class MAIn {

public static void mAIn(String[] args) throws Exception {

String JSon = "{\"user_name\":\"John Doe\",\"emAIl_address\":\"johndoe@example.com\",\"phone_number\":\"1234567890\"}";

ObjectMapper objectMapper = new ObjectMapper();

User user = objectMapper.readValue(JSon, User.class);

System.out.println(user.getUserName()); // 输出: John Doe

System.out.println(user.getEmAIlAddress()); // 输出: johndoe@example.com

System.out.println(user.getPhoneNumber()); // 输出: 1234567890

}

}

class User {

@JSonProperty("user_name")

private String userName;

@JSonProperty("emAIl_address")

private String emAIlAddress;

@JSonProperty("phone_number")

private String phoneNumber;

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName = userName;

}

public String getEmAIlAddress() {

return emAIlAddress;

}

public void setEmAIlAddress(String emAIlAddress) {

this.emAIlAddress = emAIlAddress;

}

public String getPhoneNumber() {

return phoneNumber;

}

public void setPhoneNumber(String phoneNumber) {

this.phoneNumber = phoneNumber;

}

}

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号