4.9.0 • Published 3 years ago
bs-aeson v4.9.0
bs-aeson
Example
(* OCaml *)
type line = {
start: point;
end_: point;
thickness: int option
}
and point = {
x: float;
y: float
}
module Decode = struct
let point json =
let open! Aeson.Decode in {
x = json |> field "x" float;
y = json |> field "y" float
}
let line json =
Aeson.Decode.{
start = json |> field "start" point;
end_ = json |> field "end" point;
thickness = json |> optional (field "thickness" int)
}
end
let data = {| {
"start": { "x": 1.1, "y": -0.4 },
"end": { "x": 5.3, "y": 3.8 }
} |}
let line = data |> Js.Json.parseExn
|> Decode.line/* Reason */
type line = {
start: point,
end_: point,
thickness: option int
}
and point = {
x: float,
y: float
};
module Decode = {
let point json =>
Aeson.Decode.{
x: json |> field "x" float,
y: json |> field "y" float
};
let line json =>
Aeson.Decode.{
start: json |> field "start" point,
end_: json |> field "end" point,
thickness: json |> optional (field "thickness" int)
};
};
let data = {| {
"start": { "x": 1.1, "y": -0.4 },
"end": { "x": 5.3, "y": 3.8 }
} |};
let line = data |> Js.Json.parseExn
|> Decode.line;Installation
npm install --save bs-aesonThen add bs-aeson to bs-dependencies in your bsconfig.json:
{
...
"bs-dependencies": ["bs-aeson"]
}Changes
4.9.0
- Add new function called
Aeson.Encode.beltMap1to encodeBelt.Map.tas dictionary
4.8.0
Aeson.Decode.beltMapnow supports decoding object as long as the key is a string. If the key is a number, it still needs to be wrapped with"".- The given
decodeKeywill be called appropriately with either string or number. - Decoding array of tuples is still supported.
- The given
4.7.0
- BREAKING CHANGE: Remove 'nativeint' since Rescript no longer supports this
4.6.0
- Add
Aeson.Decode.beltMap,Aeson.Decode.beltMapInt,Aeson.Decode.beltMapString. - Add
Aeson.Encode.beltMap,Aeson.Encode.beltMapInt,Aeson.Encode.beltMapString.
4.5.0
- BREAKING CHANGE: Rename
int64_stringtoint64_to_string(this matches the naming convention). - Fix
int64_of_stringto work with negative numbers. - Add unit tests for
int64_of_string,int64_to_string, and negativebigint.
4.4.0
- Require bs-platform 8.4.2 and bs-zarith 3.1.0 as a minimum versions.
4.3.0
- Require bs-platform 8.0.0 and bs-zarith 3.0.0 as a minimum versions.
4.2.0
- Add
Aeson.Decode.optionalFieldreturnsnullas none. - Make
Aeson.Encode.optionalFieldparameter order matchAeson.Decode.optionalField.
4.1.0
- Add
Aeson.Encode.optionalFieldandAeson.Decode.optionalField.
4.0.0
- Add dependency
bs-zarith. - Add
Aeson.Encode:uint8,uint16,uint32,uint64,int64_of_string,bigint. - Add
Aeson.Decode:uint8,uint16,uint32,uint64,int64_of_string,bigint. - Upgrade
bs-platformto 7.2.2. - Upgrade
@glennsl/bs-jestto 0.4.9.
3.2.0
- Fix
Aeson.Decode.tuple6. - Add
Aeson.Decode.tuple7,Aeson.Decode.tuple8,Aeson.Decode.tuple9,Aeson.Decode.tuple10,Aeson.Encode.tuple6,Aeson.Encode.tuple7,Aeson.Encode.tuple8,Aeson.Encode.tuple9,Aeson.Encode.tuple10. - Add tests for all of the tuple functions.
3.1.0
- Upgrade
bs-platformto 4.0.18.
3.0.0
- Change
Aeson.Decode.int64to decode a literal. - Move previous definition of
Aeson.Decode.int64toAeson.Decode.int64_of_arrayandAeson.Encode.int64toAeson.Decode.int64_to_array. - Bring back
Aeson.Compatibility.Eitherand the definitions ofAeson.Decode.booleanandAeson.Encode.booleanfrom1.1.0. - Add
Aeson.Compatibility.Either.to_resultandAeson.Compatibility.Either.of_result.
2.0.0
- Remove support for
Js.boolean. RemoveAeson.Decode.boolean,Aeson.Decode.booleanArray,Aeson.Encode.booleanandAeson.Encode.boolean. - Remove
Aeson.Compatibility,Aeson.Decode.eitherandAeson.Encode.eitherdepend onBelt.Result.t. - Remove
Aeson.Option. These functions are now available in the BuckleScript stdlib Belt inBelt.Option. - Add
Aeson.Decode.boolArray,Aeson.Encode.boolArray,Aeson.Decode.int32,Aeson.Encode.int32,Aeson.Decode.int64,Aeson.Encode.int64,Aeson.Decode.nativeint,Aeson.Encode.nativeint,Aeson.Decode.result,Aeson.Encode.result. - Require BuckleScript >= 3.1.0.
1.1.0
Add
Aeson.Encode.singleEnumeratorandAeson.Decode.singleEnumeratorto support Haskell aeson style of serializing a enumeration type with only a single enumerator (as an empty JSON list[]).Add
Aeson.Compatibility.Eitherand serialization functions.Fix
Aeson.Encode.dateandAeson.Decode.int.
1.0.0
Fork from bs-json.
Add
Aeson.Decode.date,Aeson.Decode.tuple2,Aeson.Decode.tuple3,Aeson.Decode.tuple4,Aeson.Decode.tuple5,Aeson.Decode.tuple6,Aeson.Decode.unwrapResult.Add
Aeson.Encode.tuple2,Aeson.Encode.tuple3,Aeson.Encode.tuple4,Aeson.Encode.tuple5,Aeson.Encode.tuple6.