Package fr.gouv.vitam.common.json
Class CanonicalJsonFormatter
java.lang.Object
fr.gouv.vitam.common.json.CanonicalJsonFormatter
Json serializer with canonicalization. Ensures deterministic encoding for consistent hashing purposes.
Serializes a json node object in a canonical deterministic encoding.
This encoding must never be changed to avoid inconsistent hashing of previously encoded data.
String literals are encoded as follows in the format '"char1char2..."'
- Simple escaping is applied for and only for the following characters : '"', '\\', '\b', '\f', \n', '\r' & '\t'.
- Printable ascii chars are not escaped [32 - 127]
- 4 digit hex escaping for any other character (ሴ).
Integer literals are encoded as is (0, 1234, -1234)
Floating numbers are formatted using Double.format()
Arrays are encoded is the '[entry1,entry2...]' format.
Objects entries are encoded with sorted keys in the '{"key1":value1,...)}'
No pretty-printing is appended (no line breaks or spacing is appended).
-
Method Summary
Modifier and TypeMethodDescriptionstatic InputStream
serialize
(com.fasterxml.jackson.databind.JsonNode node) Serializes a json node object in a canonical deterministic encoding.static void
serialize
(com.fasterxml.jackson.databind.JsonNode node, OutputStream outputStream) Serializes a json node object in a canonical deterministic encoding.static byte[]
serializeToByteArray
(com.fasterxml.jackson.databind.JsonNode node) Serializes a json node object in a canonical deterministic encoding.
-
Method Details
-
serialize
Serializes a json node object in a canonical deterministic encoding.- Parameters:
node
- the json node
-
serializeToByteArray
public static byte[] serializeToByteArray(com.fasterxml.jackson.databind.JsonNode node) Serializes a json node object in a canonical deterministic encoding.- Parameters:
node
- the json node
-
serialize
public static void serialize(com.fasterxml.jackson.databind.JsonNode node, OutputStream outputStream) throws IOException Serializes a json node object in a canonical deterministic encoding.- Parameters:
node
- the json nodeoutputStream
- output stream to which json node is serialized.- Throws:
IOException
-