Subj : Re: read json from file To : echicken From : Mortifis Date : Sun Jun 21 2020 12:32 pm > Re: Re: read json from file > By: Mortifis to echicken on Sat Jun 20 2020 21:43:56 > Mo> }, .... that's the 1st three records of 209,578 records ... gotta read > Mo> all 209,578 records (1 million, 8 hundred 86 thousand, 2 hundred 13 > Mo> lines) ? ... > Mo> bleh ... lol > Not necessarily, but you'll need something more than what we have on hand. > Streaming JSON parsers for handling really large files are a thing, but I > don't know if there's one that can be readily ported to our environment. > JSON.parse() only wants to parse a complete JSON string. You'd need to be > able to pre-process what you're reading from the file to be sure that > JSON.parse() won't choke on it. > That's tricky to do in a generic way that could handle any old JSON you > throw at it. > Easier if you do it as a custom job for this particular file, and if this > file is just a flat array of objects, all with the same keys and types of > values. It's either going to be a bit complicated but fairly solid, or > simple and hacky and maybe not super reliable. This worked : load("sbbsdefs.js"); var infile = js.exec_dir + "owm-citylist.json"; write('Enter City Name: '); var what = readln().toUpperCase(); writeln('\r\n\r\nSearching for '+what+'\r\n'); var j = new File(infile); var json = ""; var match = false; j.open("r"); while(!j.eof && !match) { json = ""; for(var i = 1; i < 10; i++) { // 9 lines per record { ... } json += j.readln(); json = json.replace(/^\s+/g, ''); } json = json.slice(0, -1); // strip trailing ',' from string var obj = JSON.parse(json); var n = obj['name'].toUpperCase().indexOf(what); if(n >= 0) { writeln('Name: '+ obj['name']+' Country:'+obj['country']+'\r\n\r\n'); match = true; } } j.close(); currently exits on 1st match ... Thank you for pointing me in the right direction (again :) ~Mortifis --- þ Synchronet þ Realm of Dispair BBS - http://ephram.synchro.net:82 .