I'd suggest that the first thing to do is to look for any information at all on what the authors describe those files as. In general .ini files are deprecated because they aren't very good at defining structured data.
They probably wouldn't parse as JSON since there isn't a colon between the key and value, or as YAML on account of the quotes around both key and value, and it's clearly not XML. Even if you could find something which was superficially similar, there'd be a risk that Valve had done something unexpected with e.g. quoting/escaping. Various people describe it as "JSON-like" and there are relevant projects on e.g. Github, but the ultimate reference is obviously
https://developer.valvesoftware.com/wiki/KeyValuesApropos parsers, Google and/or Wp for "top down" and "recursive descent". The general idea is that you dascard whitespace/padding except where it's significant to the format (i.e. if EOL is significant you convert each to a token as you're reading the files, and you collapse repeated whitespace to single spaces), then you read (and process/store) a token and then use information on what you've just read to guide your choice as to what's expected next. So your
"LibraryFolders"
{
"TimeNextStatsReport" "1601180103"
"ContentStatsID" "6125312595497005168"
"1" "/media/local/IntelSSD/SteamLibrary"
"2" "/media/local/WeakOS/game_lib_test"
}
is processed as
* Expect a quoted string... OK, got it.
* Expect a a block in braces... go do it... end.
Your block in braces is processed as
* Expect literal { otherwise error
* Expect quoted identifier or number
* If identifier, process it and expect a quoted string
* If number, process it and expect a quoted string
* repeat until }
HTH.
MarkMLl