1. 引入pom依赖
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.0</version>
</dependency>
2. 拼音工具类
public class PinYinUtil {
private PinYinUtil(){
throw new IllegalStateException("Utility class");
}
private static final int ASCII_MIN_SIZE = 32;
private static final int ASCII_MAX_SIZE = 125;
/**
* @Description: 汉字转换方法(数字与字母不转换)
* @param ch: 单个字符
* @return: java.lang.String[]
**/
public static String[] getPinyin(char ch) {
try {
HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();
outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
outputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);
//ASCII >=33 ASCII<=125的直接返回 ,ASCII码表:http://www.asciitable.com/
if (ch >= ASCII_MIN_SIZE && ch <= ASCII_MAX_SIZE) {
return new String[]{String.valueOf(ch)};
}
return distinct(PinyinHelper.toHanyuPinyinStringArray(ch, outputFormat));
} catch (BadHanyuPinyinOutputFormatCombination e) {
throw new IllegalStateException(e);
}
}
private static String[] distinct(String[] arr) {
if (arr == null || arr.length == 0) {
return arr;
}
HashSet<String> set = new HashSet<>();
for (String str : arr) {
set.add(str);
}
return set.toArray(new String[0]);
}
}
3. 调试
public static void main(String[] args) {
String str = "王行藏度阿都为兴重朝";
char[] chs = str.toCharArray();
for(char ch : chs){
System.out.println(ch+"\t"+ Arrays.toString(PinYinUtil.getPinyin(ch)));
}
}
4. 运行结果

5. 项目接口返回Json场景
{
"errorCode": "0",
"errorMsg": "success",
"data": [
[
"wang"
],
[
"xing",
"hang",
"heng"
],
[
"zang",
"cang"
],
[
"du",
"duo"
],
[
"a",
"e"
],
[
"du",
"dou"
],
[
"wei"
],
[
"xing"
],
[
"zhong",
"chong"
],
[
"zhao",
"chao"
]
]
}