jstruct 0.2.6
Struct JSON serializer/deserializer
To use this package, run the following command in your project's root directory:
Manual usage
Put the following dependency into your project's dependences section:
jstruct
Struct JSON serializer/deserializer
Usage
Serialization
Below we define a struct called Person
:
struct Person
{
public string firstname, lastname;
public int age;
public string[] list;
public JSONValue extraJSON;
}
Let's create a instance and set some values before we continue:
Person p1;
p1.firstname = "Tristan";
p1.lastname = "Kildaire";
p1.age = 23;
p1.list = ["1", "2", "3"];
p1.extraJSON = parseJSON(`{"item":1, "items":[1,2,3]}`);
Now, we make a call to serializeRecord
as follows:
JSONValue serialized = serializeRecord(p1);
This returns the following JSON:
{
"age": 23,
"extraJSON": {
"item": 1,
"items": [
1,
2,
3
]
},
"firstname": "Tristan",
"lastname": "Kildaire",
"list": "[\"1\", \"2\", \"3\"]"
}
Deserialization
Deserialization works by having your predefined struct type and then looking up those field names in the provided JSON. Therefore for this we will be using the following struct type:
struct Person
{
public string firstname, lastname;
public int age;
public bool isMale;
public JSONValue obj;
}
Now, let's say we were given the following JSON:
{
"firstname" : "Tristan",
"lastname": "Kildaire",
"age": 23,
"obj" : {"bruh":1},
"isMale": true,
}
We can then deserialize the JSON to our type Person
, with the fromJSON
method:
// Define our JSON
JSONValue json = parseJSON(`{
"firstname" : "Tristan",
"lastname": "Kildaire",
"age": 23,
"obj" : {"bruh":1},
"isMale": true,
"list": [1,2,3]
}
`);
// Deserialize
Person person = fromJSON!(Person)(json);
And we can confirm this with:
writeln(person):
Which will output:
Person("Tristan", "Kildaire", 23, true, {"bruh":1})
Installing
In order to use jstruct in your project simply run:
dub add jstruct
And then in your D program import as follows:
import jstruct;
Help wanted
There are some outstanding issues I want to be able to fix/have implemented, namely:
- [ ] Support for custom types serialization/deserialization (think
enums
for example) - see issue #2
- 0.2.6 released a year ago
- Hax-io/jstruct
- LGPL v3.0
- Copyright © 2023, Tristan B. Velloza Kildaire
- Authors:
- Dependencies:
- none
- Versions:
-
1.0.5 2023-Jun-28 1.0.4 2023-Jun-28 1.0.3 2023-Jun-28 1.0.2 2023-Jun-28 1.0.1 2023-Jun-28 - Download Stats:
-
-
0 downloads today
-
0 downloads this week
-
1 downloads this month
-
192 downloads total
-
- Score:
- 0.7
- Short URL:
- jstruct.dub.pm