A method, performed by a computing system comprising: a processor; and memory containing program instructions executable by the processor, wherein the method comprises repeatedly performing, for blocks of a textual data-interchange file, operations including: receiving, by a parser executing on the computing system, a block of the textual data-interchange file, wherein the block contains one or more records (812, 822, 832), each encapsulated by a brace or a bracket, and wherein the one or more records each contain one or more elements (814-818, 824-828, 834-838), and each of the elements comprises an object containing a name / value pair, an array containing an ordered set of values, or a value, or a combination thereof; and while a next block is received: identifying, by the parser, any pre-defined elements of the one or more elements contained in records (812, 822, 832) that are completed within the block, wherein the pre-defined elements are specified by a set of paths, each path hierarchically defining a location of an element within a record; storing, by the parser, into one or more files or one or more database tables, the pre-defined elements contained in records that are completed within the block; and determining, by the parser, whether the block ends with a partial record, and maintaining any such partial record for later storage in conjunction with processing of a subsequent block of the textual data-interchange file. a processor; and memory containing program instructions executable by the processor, wherein the method comprises repeatedly performing, for blocks of a textual data-interchange file, operations including: receiving, by a parser executing on the computing system, a block of the textual data-interchange file, wherein the block contains one or more records (812, 822, 832), each encapsulated by a brace or a bracket, and wherein the one or more records each contain one or more elements (814-818, 824-828, 834-838), and each of the elements comprises an object containing a name / value pair, an array containing an ordered set of values, or a value, or a combination thereof; and while a next block is received: identifying, by the parser, any pre-defined elements of the one or more elements contained in records (812, 822, 832) that are completed within the block, wherein the pre-defined elements are specified by a set of paths, each path hierarchically defining a location of an element within a record; storing, by the parser, into one or more files or one or more database tables, the pre-defined elements contained in records that are completed within the block; and determining, by the parser, whether the block ends with a partial record, and maintaining any such partial record for later storage in conjunction with processing of a subsequent block of the textual data-interchange file. identifying, by the parser, any pre-defined elements of the one or more elements contained in records (812, 822, 832) that are completed within the block, wherein the pre-defined elements are specified by a set of paths, each path hierarchically defining a location of an element within a record; storing, by the parser, into one or more files or one or more database tables, the pre-defined elements contained in records that are completed within the block; and determining, by the parser, whether the block ends with a partial record, and maintaining any such partial record for later storage in conjunction with processing of a subsequent block of the textual data-interchange file.