gpt4 book ai didi

javascript - 将\u00f0\u009f\u0098\u008a 等 Facebook json 文件序列转换为表情符号字符

转载 作者:行者123 更新时间:2023-12-02 00:25:03 25 4
gpt4 key购买 nike

我已将我的 Facebook 数据下载为 json 文件。我的帖子的 json 文件包含表情符号,它在 json 文件中看起来像这样:\u00f0\u009f\u0098\u008a。我想解析这个 json 文件并用正确的表情符号提取帖子。

我找不到将此 json 文件加载到 json 对象(使用 JavaScript)然后使用正确的表情符号读取(并输出)帖子的方法。

(最终我会使用它的 REST API 将这些帖子上传到 WordPress,我已经弄清楚了如何做。)

我的程序是用 JavaScript 编写的,并从命令行使用 nodejs 运行。我已经使用以下方法解析了文件:

const fs = require('fs')
let filetext = fs.readFileSync(filename, 'utf8')
let jsonObj = JSON.parse(filetext)

但是,当我输出数据时(使用类似 jsonObj.status_updates.data[0].post 的东西),我得到了表情符号的奇怪字符,比如 生日快乐 ├░┬ ƒ┬ÿ┬è 而不是生日快乐😊。这不是 Windows 10 控制台显示问题,因为我也已将输出通过管道传输到文件。

我使用了答案 Decode or unescape \u00f0\u009f\u0091\u008d to 👍在解析文件之前将 json 文件中的\uXXXX 序列更改为实际的表情符号。但是,JSON.parse 不起作用。它给出了这个信息:

SyntaxError: Unexpected token o in JSON at position 1
at JSON.parse (<anonymous>)

所以我陷入困境:如果我在尝试解析 json 文件之前转换\uXXXX 序列,JavaScript json 解析器就会出错。如果我不转换\uXXXX 序列,那么 json 对象形式的解析文件不会提供正确的表情符号!

如何从 json 文件中正确提取数据,包括表情符号?

最佳答案

我相信你应该能够在 Node.js 中完成所有这些,这里有一个例子。我已经使用 Visual Studio Code 对此进行了测试。

您可以在这里尝试:https://repl.it/repls/BrownAromaticGnudebugger

注意:我已经根据@JakubASuplicki 非常有用的评论更新了 processMessage 以仅查看字符串属性。

index.js

const fs = require('fs')
let filename = "test.json";
let filetext = fs.readFileSync(filename, "utf8");
let jsonObj = JSON.parse(filetext);

console.log(jsonObj);

function decodeFBString(str) {
let arr = [];
for (var i = 0; i < str.length; i++) {
arr.push(str.charCodeAt(i));
}
return Buffer.from(arr).toString("utf8");
}

function processMessages (messageArray) {
return messageArray.map(processMessage);
}

function processMessage(message) {
return Object.keys(message).reduce((obj, key) => {
obj[key] = (typeof message[key] === "string") ? decodeFBString(message[key]): message[key];
return obj
}, {});
}

let messages = processMessages(jsonObj.messages);
console.log("Input: ", jsonObj.messages);
console.log("Output: ", messages);

test.json

{
"participants": [
{
"name": "Philip Marlowe"
},
{
"name": "Terry Lennox"
}
],
"messages": [
{
"sender_name": "Philip Marlowe",
"timestamp_ms": 1546857175,
"content": "Meet later? \u00F0\u009F\u0098\u008A",
"type": "Generic"
},
{
"sender_name": "Terry Lennox",
"timestamp_ms": 1546857177,
"content": "Excellent!! \u00f0\u009f\u0092\u009a",
"type": "Generic"
}
]
}

关于javascript - 将\u00f0\u009f\u0098\u008a 等 Facebook json 文件序列转换为表情符号字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54067194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com