0.9.12 • Published 1 year ago

net.yutopp.vjson v0.9.12

Weekly downloads
8
License
-
Repository
-
Last release
1 year ago

VJson 🍣

A JSON serializer/deserializer (with JsonSchema support) library written in pure C#.

ci npm NuGet Badge codecov license

VJson is a JSON serializer/deserializer (with JsonSchema support) library written in pure C#. Supported versions are .NET Standard 2.0 or higher.
This library is developed as a purely C# project, however it also supports that be build with Unity 2019.4.22f1 or higher.

Installation

For standard C# projects

You can use Nuget/VJson.

dotnet add package VJson

For Unity projects

stable

Add scoped registry information shown below to your Packages/manifest.json if not exists.

{
  "scopedRegistries": [
    {
      "name": "yutopp.net",
      "url": "https://registry.npmjs.com",
      "scopes": [
        "net.yutopp"
      ]
    }
  ]
}

And add net.yutopp.vjson to your Packages/manifest.json like below.

{
  "dependencies": {
    "net.yutopp.vjson": "*"
  }
}

nightly

Add a url for VJson git repository to your Packages/manifest.json like below.

{
  "dependencies": {
    "net.yutopp.vjson": "https://github.com/yutopp/VJson.git?path=Packages/net.yutopp.vjson"
  }
}

(TODO: Provide unity packages)

Usage example

Serialize/Deserialize

//
// For serialization
//
var serializer = new VJson.JsonSerializer(typeof(int));

// You can get JSON strings,
var json = serializer.Serialize(42);

// OR write json data(UTF-8) to streams directly.
using (var s = new MemoryStream())
{
    serializer.Serialize(s, 42);
}
//
// For deserialization
//
var serializer = new VJson.JsonSerializer(typeof(int));

// You can get Object from strings,
var value = serializer.Deserialize(json);

// OR read json data(UTF-8) from streams directly.
using (var s = new MemoryStream(Encoding.UTF8.GetBytes(json)))
{
    var value = serializer.Deserialize(s);
}

VJson supports serializing/deserializing of some System.Collections(.Generics) classes listed below,

  • List
  • Dictionary<string, T>
  • Array

and user defined classes. For user defined classes, converting only all public fields are supported.

e.g.

(It is strongly recommended to always add VJson attributes such as JsonField to fields that you want to treat as Json. This will avoid problems with IL2CPP, especially when using Unity.)

class SomeObject
{
    private float _p = 3.14f;    // Fields which are non-public will not be exported by default.
    [JsonField] long _p2 = 4;    // Fields which are non-public BUT having [JsonField] (+etc) attributes will BE exported!
    public int X;                // Fields which are public will be exported by default, but we strongly recommended to add [JsonField] attributes like below.
    [JsonField] public string Y;
}

var obj = new SomeObject {
    X = 10,
    Y = "abab",
},

var serializer = new VJson.JsonSerializer(typeof(SomeObject));
var json = serializer.Serialize(obj);
// > {"_p2": 4,"X":10,"Y":"abab"}

var v = serializer.Deserialize("{\"X\":10,\"Y\":\"abab\"}");
// > v becomes same as obj.

Attributes

...

JSON Schema and validation

VJson supports JSON Schema draft7.

(TODO: Write examples)

Attributes

(TODO: Write examples)

Other use cases are available at here.

Tasks

  • Performance tuning

License

Boost Software License - Version 1.0

References

Author

0.9.12

1 year ago

0.9.11

2 years ago

0.9.9

3 years ago

0.9.10

3 years ago

0.9.8

3 years ago

0.9.7

3 years ago

0.9.6

3 years ago

0.9.4

3 years ago

0.9.3

3 years ago

0.9.5

3 years ago

0.9.2

3 years ago

0.8.0-dev3

3 years ago

0.8.0-dev2

3 years ago

0.8.0-dev

3 years ago