javascript - 将 JSON 转换为 Javascript 数组对象 - node.js

标签 javascript arrays json node.js

我不懂任何 Javascript。我有一个如下所示的 .json 文件:

{ "results": [
{
    "challenger": {
        "__type": "Pointer",
        "className": "Player",
        "objectId": "STWAxAHKay"
    },
    "challengerScore": 18,
    "createdAt": "2014-12-05T21:43:01.099Z",
    "defender": {
        "__type": "Pointer",
        "className": "Player",
        "objectId": "UGAmRVd7Tr"
    },
    "defenderScore": 21,
    "objectId": "pmiACGwe45",
    "updatedAt": "2014-12-05T21:43:01.099Z"
},
{
    "challenger": {
        "__type": "Pointer",
        "className": "Player",
        "objectId": "STWAxAHKay"
    },
    "challengerScore": 23,
    "createdAt": "2014-12-05T21:43:01.969Z",
    "defender": {
        "__type": "Pointer",
        "className": "Player",
        "objectId": "UGAmRVd7Tr"
    },
    "defenderScore": 25,
    "objectId": "HqptXdYmQL",
    "updatedAt": "2014-12-05T21:43:01.969Z"
}
]}

我正在像这样将它读入我的脚本中:

var fs = require('fs');
var results = JSON.parse(fs.readFileSync('Game.json', 'utf8'));

results 是一个对象,但不是数组。

我想让它成为一个数组,这样我就可以遍历每个游戏,从每个游戏中获取我需要的数据,并使用它来创建一个新对象,我最终将其保存在一个 .json 文件中。

我希望有人能指导我完成整个过程,但如果有人能告诉我如何制作一系列我可以迭代的游戏,我会很高兴。

谢谢。

最佳答案

您可以像这样尝试 Javascript 的内置函数:

var fs = require('fs');
var results = JSON.parse(fs.readFileSync('games.json', 'utf8'));

function grabDataFromAGame(elem, index, array) {
    // Grab the data from the game object you need
    var gameObj = {};
    gameObj.challengerScore = elem.challengerScore;
    gameObj.defenderScore = elem.defenderScore;
    gameObj.id = elem.objectId;
    saveGameObjToFile(gameObj);
}

function saveGameObjToFile(gameObj){
    var gameFile = fs.openSync('./gameObj-' + gameObj.id + '.json', 'w');
    fs.writeSync(gameFile, JSON.stringify(gameObj));
}
results.results.forEach(grabDataFromAGame);

此代码生成了以下文件:

~/salesman 542-> node so.js 
~/salesman 543-> 
~/salesman 543-> 
~/salesman 543-> ll gameObj-*
-rw-r--r--  1 neerajsharma  staff    59B Jun 11 18:56 gameObj-pmiACGwe45.json
-rw-r--r--  1 neerajsharma  staff    59B Jun 11 18:56 gameObj-HqptXdYmQL.json
~/salesman 544-> cat gameObj-pmiACGwe45.json | python -m json.tool
{
    "challengerScore": 18,
    "defenderScore": 21,
    "id": "pmiACGwe45"
}
~/salesman 545-> 

请注意,不建议对 Node 使用 sync 调用,因为 node 是单线程的,在同步调用完成之前您的应用程序将被阻塞。

可以找到使用 forEach 的示例 here

关于javascript - 将 JSON 转换为 Javascript 数组对象 - node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30793965/

相关文章:

c - 如何使用 gcc 编译器 __attribute__ 收集 ELF 部分中的结构?

c++ - 指针/引用数组?

javascript - 如何使用数字键对对象进行降序排序?

java - 生成响应对象的最佳实践

java - 来自 HashMap 的 View 未正确命名

javascript - 列表中有多少项包含一个单词

javascript - 在 DOM 上使用 Javascript 定位 Div

java - XML 到 JSON 的动态转换

javascript - 如何使用 "each in jquery"或 "each in javascript"显示 JavaScript 对象内部的数组项

javascript - 带有 firebase 通知的 Flutter web - subscribeToTopic