如何在安卓设备中解码JSON表情符号

3

我使用了compile 'org.apache.commons:commons-lang3:3.4',但没有起作用。

我的json表情符号是这样的:

|ud83d|ude00                      
|ud83d|ude01                      
|ud83d|ude02                      
|ud83d|ude03                      
|ud83d|ude04                      
|ud83d|ude05                      
|ud83d|ude06                      
|ud83d|ude09                      
|ud83d|ude0a                      
|ud83d|ude0b                      
|ud83d|ude0e                      
|ud83d|ude0d                      
|ud83d|ude18                      
|ud83d|ude17

我找不到任何方法。

我只发现了 >> https://www.phpclasses.org/browse/file/67374.html

但我不知道如何通过代码将其转换为此格式。


哦,没有建议! - hadi
你尝试过这个库吗?https://github.com/vdurmont/emoji-java - Rosário Pereira Fernandes
1个回答

2

如评论中所建议,您应该使用优秀的emoji-java库。 首先添加所需的依赖项 - 例如,Maven看起来像:

    <dependency>
        <groupId>com.vdurmont</groupId>
        <artifactId>emoji-java</artifactId>
        <version>3.1.3</version>
    </dependency>

然后,您需要更改json,因为表情符号使用反斜杠(\)而不是管道符号(|)。

之后,您可以像这样解析文件(Java 8):

List<String> collect = Files.lines(Paths.get("filePath"), StandardCharsets.UTF_8)
                .map(StringEscapeUtils::unescapeJava)
                .collect(Collectors.toList());
collect.forEach(s -> System.out.println(EmojiManager.getByUnicode(s).getUnicode()));

Java 7:

try (BufferedReader br = new BufferedReader(new FileReader("C:\\untitled\\src\\main\\resources\\emoji.txt"))) {

    String line;
    while ((line = br.readLine()) != null) {
        System.out.println(EmojiManager.getByUnicode(StringEscapeUtils.unescapeJava(line)).getUnicode());
     }

} catch (IOException e) {
      // error handling
}

请注意,您应该使用StringEscapeUtils.unescapeJava来从文件中检索正确的值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接