/* OCaml */
type line = {
start: point,
end_: point,
thickness: option(int),
}
and point = {
x: float,
y: float,
};
module Decode = {
let point = json => {
open! 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;
(* 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;
342: syntax error, consider adding a `;' before
npm install --save bs-aeson
Then add bs-aeson
to bs-dependencies
in your bsconfig.json
:
{
...
"bs-dependencies": ["bs-aeson"]
}
Aeson.Decode.optionalField
returns null
as none.Aeson.Encode.optionalField
parameter order match Aeson.Decode.optionalField
.Aeson.Encode.optionalField
and Aeson.Decode.optionalField
.bs-zarith
.Aeson.Encode
: uint8
, uint16
, uint32
, uint64
, int64_of_string
, bigint
.Aeson.Decode
: uint8
, uint16
, uint32
, uint64
, int64_of_string
, bigint
.bs-platform
to 7.2.2.@glennsl/bs-jest
to 0.4.9.Aeson.Decode.tuple6
.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
.bs-platform
to 4.0.18.Aeson.Decode.int64
to decode a literal.Aeson.Decode.int64
to Aeson.Decode.int64_of_array
and Aeson.Encode.int64
to Aeson.Decode.int64_to_array
.Aeson.Compatibility.Either
and the definitions of Aeson.Decode.boolean
and Aeson.Encode.boolean
from 1.1.0
.Aeson.Compatibility.Either.to_result
and Aeson.Compatibility.Either.of_result
.Js.boolean
. Remove Aeson.Decode.boolean
, Aeson.Decode.booleanArray
, Aeson.Encode.boolean
and Aeson.Encode.boolean
.Aeson.Compatibility
, Aeson.Decode.either
and Aeson.Encode.either
depend on Belt.Result.t
.Aeson.Option
. These functions are now available in the BuckleScript stdlib Belt in Belt.Option
.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
.Add Aeson.Encode.singleEnumerator
and Aeson.Decode.singleEnumerator
to support Haskell aeson style of serializing a enumeration type with only a single enumerator (as an empty JSON list []
).
Add Aeson.Compatibility.Either
and serialization functions.
Fix Aeson.Encode.date
and Aeson.Decode.int
.
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
.