{"id":27057290,"url":"https://github.com/mrange/minijson","last_synced_at":"2025-06-15T06:33:52.709Z","repository":{"id":35057048,"uuid":"39191493","full_name":"mrange/MiniJson","owner":"mrange","description":"Minimal conforming JSON parser for F#","archived":false,"fork":false,"pushed_at":"2017-06-17T14:02:12.000Z","size":281,"stargazers_count":12,"open_issues_count":0,"forks_count":3,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-06-11T23:17:45.422Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"F#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mrange.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-07-16T10:42:39.000Z","updated_at":"2020-05-29T10:03:31.000Z","dependencies_parsed_at":"2022-06-27T12:35:33.261Z","dependency_job_id":null,"html_url":"https://github.com/mrange/MiniJson","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/mrange/MiniJson","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrange%2FMiniJson","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrange%2FMiniJson/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrange%2FMiniJson/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrange%2FMiniJson/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrange","download_url":"https://codeload.github.com/mrange/MiniJson/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrange%2FMiniJson/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259934775,"owners_count":22934330,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-04-05T11:18:24.884Z","updated_at":"2025-06-15T06:33:52.677Z","avatar_url":"https://github.com/mrange.png","language":"F#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MiniJson\n\n[![Build Status](https://travis-ci.org/mrange/MiniJson.svg?branch=master)](https://travis-ci.org/mrange/MiniJson)\n\nMiniJson is a [conforming](http://jsonlint.com) [JSON](http://json.org) parser for F# licensed under\n[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0)\n\nMiniJson has decent performance (compares favourable to [Json.NET](http://www.newtonsoft.com/json) and [FSharp.Data](https://github.com/fsharp/FSharp.Data))\nand provides decent error messages (possible to suppress if performance is of importance).\n\n![Deserialization Performance Comparison (lower is better)](https://raw.githubusercontent.com/mrange/MiniJson/master/images/perf_minijson.png)\nMiniJson deserialization compared to popular JSON libraries. Lower is better.\n\n\nExample of error message when trying to parse an invalid JSON document: \"{\"abc\":}\"\n```\nFailed to parse input as JSON\n{\"abc\":}\n-------^ Pos: 7\nExpected: '\"', '-', '[', '{', digit, false, null or true\n```\n\nThe best way of referencing MiniJson is to use [Paket](http://www.nuget.org/packages/Paket/)\n[http references](http://fsprojects.github.io/Paket/http-dependencies.html)\n\n[paket.dependencies](http://fsprojects.github.io/Paket/dependencies-file.html)\n```\nhttp https://raw.githubusercontent.com/mrange/MiniJson/master/src/MiniJson/MiniJson.fs\nhttp https://raw.githubusercontent.com/mrange/MiniJson/master/src/MiniJson/MiniJson.Dynamic.fs\n```\n\n[NuGet](http://www.nuget.org/packages/M3.MiniJson/) can also be used to reference MiniJson\n\nTo install MiniJson using NuGet, run the following command in the [Package Manager Console](http://docs.nuget.org/consume/package-manager-console)\n```\nPM\u003e Install-Package M3.MiniJson\n```\n\nUsing MiniJson is straight-forward (F#)\n```fsharp\nopen MiniJson.JsonModule\nopen MiniJson.DynamicJsonModule\n\n[\u003cEntryPoint\u003e]\nlet main argv =\n  let jsonText = \"\"\"[{\"id\":\"123\", \"name\":\"Mr. Big\", \"age\":30}, {\"id\":\"123\", \"name\":\"Mr. X\"}]\"\"\"\n\n  match parse true jsonText with  // true for full error-info\n  | Failure (msg, pos)  -\u003e printfn \"Failure@%d\\n%s\" pos msg\n  | Success json        -\u003e\n    printfn \"Success\\n%s\" \u003c| toString true json  // true to indent JSON\n\n    let root = json.Query\n\n    for i = 0 to root.Length - 1 do\n      let v     = root.[i]\n      let id    = v?id.AsString\n      let name  = v?name.AsString\n      let age   = v?age.AsFloat\n      printfn \"Record - %d: id:%s, name:%s, age:%f\" i id name age\n  0\n```\n\nEven though MiniJson is primarily designed with F# in mind there are adaptor\nfunctionality to make MiniJson usable from C#/VB\n```csharp\nusing System;\n\nusing MiniJson.Adaptor;\n\nclass Program\n{\n  static void Main(string[] args)\n  {\n    var jsonText = @\"[{\"\"id\"\":\"\"123\"\", \"\"name\"\":\"\"Mr. Big\"\", \"\"age\"\":30}, {\"\"id\"\":\"\"123\"\", \"\"name\"\":\"\"Mr. X\"\"}]\";\n\n    var jsonParser = new JsonParser (jsonText, true);\n\n    Console.WriteLine (\"ParseResult: {0}\", jsonParser);\n\n    dynamic[] users = jsonParser.DynamicResult.GetChildren ();\n\n    foreach (dynamic user in users)\n    {\n      string id     = user.id                       ;\n      string name   = user.name                     ;\n      double age    = user.age.ConvertToFloat (-1.0);\n      Console.WriteLine (\"Record: id:{0}, name:{1}, age:{2}\", id, name, age);\n    }\n  }\n}\n```\n\n\n# TODO\n\n1. Migrate to F# project scaffold\n1. Add MiniJson Strong Name\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrange%2Fminijson","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrange%2Fminijson","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrange%2Fminijson/lists"}