Thursday, May 23, 2024
 Popular · Latest · Hot · Upcoming
20
rated 0 times [  25] [ 5]  / answers: 1 / hits: 33096  / 9 Years ago, fri, june 12, 2015, 12:00:00

I don't know any Javascript. I have a .json file that looks like this:



{ 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
}
]}


I'm reading it into my script like this:



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


results is an object but it's not an array.



I would like to make it an array so I can iterate through each game, grab the data I need from each game and use it to create a new object that I ultimately save in a .json file.



I would love for someone to guide me through this entire process but I would be thrilled if someone can just show me how to make an array of games that I can iterate through just to get me started.



Thank you.


More From » arrays

 Answers
2

You can try Javascript's inbuilt functions like this:



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);


This code generated the following files:



~/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->


Note that it is not recommended to use sync calls with Node, because node is single-threaded and your application is blocked till the sync calls are complete.



An example of using forEach can be found here


[#66234] Wednesday, June 10, 2015, 9 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
milo

Total Points: 62
Total Questions: 99
Total Answers: 97

Location: Sweden
Member since Mon, May 8, 2023
1 Year ago
milo questions
Tue, Apr 19, 22, 00:00, 2 Years ago
Wed, Apr 21, 21, 00:00, 3 Years ago
Sun, May 24, 20, 00:00, 4 Years ago
Sat, May 9, 20, 00:00, 4 Years ago
;