/* 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-aesonThen 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.