Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

76 Commits

Repository files navigation

Tiny Json

Build StatusLicenseNuGet

A really simple C# JSON parser in ~350 lines

  • Attempts to parse JSON files with minimal GC allocation
  • Nice and simple "[1,2,3]".FromJson<List<int>>() API
  • Classes and structs can be parsed too!
classFoo{publicintValue;}"{\"Value\":10}".FromJson<Foo>()
  • Anonymous JSON is parsed into Dictionary<string,object> and List<object>
vartest="{\"Value\":10}".FromJson<object>();intnumber=((Dictionary<string,object>)test)["Value"];
  • No JIT Emit support to support AOT compilation on iOS
  • Attempts are made to NOT throw an exception if the JSON is corrupted or invalid: returns null instead.
  • Only public fields and property setters on classes/structs will be written to
  • You can optionally use [IgnoreDataMember] and [DataMember(Name="Foo")] to ignore vars and override the default name

Limitations:

  • No JIT Emit support to parse structures quickly
  • Limited to parsing <2GB JSON files (due to int.MaxValue)
  • Parsing of abstract classes or interfaces is NOT supported and will throw an exception.

Changelog

  • v1.1 Support added for Enums and fixed Unity compilation
  • v1.0 Initial Release

Example Usage

This example will write a list of ints to a File and read it back again:

usingSystem;usingSystem.IO;usingSystem.Collections.Generic;usingTinyJson;publicstaticclassJsonTest{publicstaticvoidMain(string[]args){//Write a fileList<int>values=newList<int>{1,2,3,4,5,6};stringjson=values.ToJson();File.WriteAllText("test.json",json);//Read it backstringfileJson=File.ReadAllText("test.json");List<int>fileValues=fileJson.FromJson<List<int>>();}}

Save this as JsonTest.cs then compile and run with mcs JsonTest.cs && mono JsonTest.exe

Installation

Simply copy and paste the JSON Parser and/or the JSON Writer into your project. I also provide NuGet but I recommend the copy paste route ;)

About

A really simple C# JSON Parser in 350 lines

Topics

Resources

Stars

343 stars

Watchers

18 watching

Forks

Releases

Packages

Used by

Contributors

Languages