Package com.powsybl.commons.json
Class JsonUtil
- java.lang.Object
-
- com.powsybl.commons.json.JsonUtil
-
public final class JsonUtil extends Object
- Author:
- Mathieu Bague
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
JsonUtil.FieldHandler
Called by variants ofparseObject(com.fasterxml.jackson.core.JsonParser, com.powsybl.commons.json.JsonUtil.FieldHandler)
on each encountered field.static interface
JsonUtil.SerializerSupplier
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static void
assertGreaterOrEqualThanReferenceVersion(String contextName, String elementName, String version, String referenceVersion)
static void
assertGreaterThanReferenceVersion(String contextName, String elementName, String version, String referenceVersion)
static void
assertLessThanOrEqualToReferenceVersion(String contextName, String elementName, String version, String referenceVersion)
static void
assertLessThanReferenceVersion(String contextName, String elementName, String version, String referenceVersion)
static com.fasterxml.jackson.core.JsonFactory
createJsonFactory()
static com.fasterxml.jackson.databind.ObjectMapper
createObjectMapper()
static String
getSourceVersion(com.fasterxml.jackson.databind.DatabindContext context, String sourceVersionAttributeKey)
Reads the version from the context (typically aDeserializationContext
) where it has been previously stored.static List<Double>
parseDoubleArray(com.fasterxml.jackson.core.JsonParser parser)
static List<Float>
parseFloatArray(com.fasterxml.jackson.core.JsonParser parser)
static List<Integer>
parseIntegerArray(com.fasterxml.jackson.core.JsonParser parser)
static <T> T
parseJson(Reader reader, Function<com.fasterxml.jackson.core.JsonParser,T> function)
static <T> T
parseJson(String json, Function<com.fasterxml.jackson.core.JsonParser,T> function)
static <T> T
parseJson(Path file, Function<com.fasterxml.jackson.core.JsonParser,T> function)
static List<Long>
parseLongArray(com.fasterxml.jackson.core.JsonParser parser)
static void
parseObject(com.fasterxml.jackson.core.JsonParser parser, boolean polymorphic, JsonUtil.FieldHandler fieldHandler)
Parses an object from the current parser position, using the provided field handler.static void
parseObject(com.fasterxml.jackson.core.JsonParser parser, JsonUtil.FieldHandler fieldHandler)
Parses an object from the current parser position, using the provided field handler.static <T> void
parseObjectArray(com.fasterxml.jackson.core.JsonParser parser, Consumer<T> objectAdder, Function<com.fasterxml.jackson.core.JsonParser,T> objectParser)
static void
parsePolymorphicObject(com.fasterxml.jackson.core.JsonParser parser, JsonUtil.FieldHandler fieldHandler)
Parses an object from the current parser position, using the provided field handler.static List<String>
parseStringArray(com.fasterxml.jackson.core.JsonParser parser)
static <T extends Extendable>
Extension<T>readExtension(com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.databind.DeserializationContext context, ExtensionProviders<? extends ExtensionJsonSerializer> supplier, Set<String> extensionsNotFound)
static <T extends Extendable>
List<Extension<T>>readExtensions(com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.databind.DeserializationContext context)
static <T extends Extendable>
List<Extension<T>>readExtensions(com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.databind.DeserializationContext context, ExtensionProviders<? extends ExtensionJsonSerializer> supplier)
static <T extends Extendable>
List<Extension<T>>readExtensions(com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.databind.DeserializationContext context, ExtensionProviders<? extends ExtensionJsonSerializer> supplier, Set<String> extensionsNotFound)
static <T> T
readJson(Path jsonFile, Class<T> clazz, com.fasterxml.jackson.databind.ObjectMapper objectMapper)
static <T> T
readJsonAndUpdate(InputStream is, T object, com.fasterxml.jackson.databind.ObjectMapper objectMapper)
static <T> T
readJsonAndUpdate(Path jsonFile, T object, com.fasterxml.jackson.databind.ObjectMapper objectMapper)
static <T> List<T>
readList(com.fasterxml.jackson.databind.DeserializationContext context, com.fasterxml.jackson.core.JsonParser parser, Class<?> type)
static <T> Set<T>
readSet(com.fasterxml.jackson.databind.DeserializationContext context, com.fasterxml.jackson.core.JsonParser parser, Class<?> type)
static <T> T
readValue(com.fasterxml.jackson.databind.DeserializationContext context, com.fasterxml.jackson.core.JsonParser parser, Class<?> type)
Reads a value using the given deserialization context (instead of only using the parser reading method that recreates a context every time).static void
setSourceVersion(com.fasterxml.jackson.databind.DatabindContext context, String version, String sourceVersionAttributeKey)
Saves the provided version into the context (typically aDeserializationContext
), for later retrieval.static void
skip(com.fasterxml.jackson.core.JsonParser parser)
Skip a part of a JSON documentstatic String
toJson(Consumer<com.fasterxml.jackson.core.JsonGenerator> consumer)
static <T extends Extendable>
List<Extension<T>>updateExtensions(com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.databind.DeserializationContext context, ExtensionProviders<? extends ExtensionJsonSerializer> supplier, Set<String> extensionsNotFound, T extendable)
static <T extends Extendable>
List<Extension<T>>updateExtensions(com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.databind.DeserializationContext context, ExtensionProviders<? extends ExtensionJsonSerializer> supplier, T extendable)
Updates the extensions of the provided extendable with possibly partial definition read from JSON.static <T extends Extendable>
List<Extension<T>>updateExtensions(com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.databind.DeserializationContext context, JsonUtil.SerializerSupplier supplier, Set<String> extensionsNotFound, T extendable)
Updates the extensions of the provided extendable with possibly partial definition read from JSON.static <T extends Extendable>
List<Extension<T>>updateExtensions(com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.databind.DeserializationContext context, JsonUtil.SerializerSupplier supplier, T extendable)
static <T extends Extendable>
List<Extension<T>>updateExtensions(com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.databind.DeserializationContext context, T extendable)
Updates the extensions of the provided extendable with possibly partial definition read from JSON.static <T> Set<String>
writeExtensions(Extendable<T> extendable, com.fasterxml.jackson.core.JsonGenerator jsonGenerator, boolean headerWanted, com.fasterxml.jackson.databind.SerializerProvider serializerProvider, ExtensionProviders<? extends ExtensionJsonSerializer> supplier)
static <T> Set<String>
writeExtensions(Extendable<T> extendable, com.fasterxml.jackson.core.JsonGenerator jsonGenerator, boolean headerWanted, com.fasterxml.jackson.databind.SerializerProvider serializerProvider, JsonUtil.SerializerSupplier supplier)
static <T> Set<String>
writeExtensions(Extendable<T> extendable, com.fasterxml.jackson.core.JsonGenerator jsonGenerator, com.fasterxml.jackson.databind.SerializerProvider serializerProvider)
static <T> Set<String>
writeExtensions(Extendable<T> extendable, com.fasterxml.jackson.core.JsonGenerator jsonGenerator, com.fasterxml.jackson.databind.SerializerProvider serializerProvider, ExtensionProviders<? extends ExtensionJsonSerializer> supplier)
static <T> Set<String>
writeExtensions(Extendable<T> extendable, com.fasterxml.jackson.core.JsonGenerator jsonGenerator, com.fasterxml.jackson.databind.SerializerProvider serializerProvider, JsonUtil.SerializerSupplier supplier)
static void
writeJson(Writer writer, Consumer<com.fasterxml.jackson.core.JsonGenerator> consumer)
static void
writeJson(Path jsonFile, Object object, com.fasterxml.jackson.databind.ObjectMapper objectMapper)
static void
writeJson(Path file, Consumer<com.fasterxml.jackson.core.JsonGenerator> consumer)
static void
writeOptionalBoolean(com.fasterxml.jackson.core.JsonGenerator jsonGenerator, String field, Optional<Boolean> optional)
static void
writeOptionalBooleanField(com.fasterxml.jackson.core.JsonGenerator jsonGenerator, String fieldName, boolean value, boolean defaultValue)
static void
writeOptionalDouble(com.fasterxml.jackson.core.JsonGenerator jsonGenerator, String field, OptionalDouble optional)
static void
writeOptionalDoubleField(com.fasterxml.jackson.core.JsonGenerator jsonGenerator, String fieldName, double value)
static void
writeOptionalDoubleField(com.fasterxml.jackson.core.JsonGenerator jsonGenerator, String fieldName, double value, double defaultValue)
static <T extends Enum>
voidwriteOptionalEnum(com.fasterxml.jackson.core.JsonGenerator jsonGenerator, String field, Optional<T> optional)
static void
writeOptionalEnumField(com.fasterxml.jackson.core.JsonGenerator jsonGenerator, String fieldName, Enum<?> value)
static void
writeOptionalFloatField(com.fasterxml.jackson.core.JsonGenerator jsonGenerator, String fieldName, float value)
static void
writeOptionalIntegerField(com.fasterxml.jackson.core.JsonGenerator jsonGenerator, String fieldName, int value)
static void
writeOptionalStringField(com.fasterxml.jackson.core.JsonGenerator jsonGenerator, String fieldName, String value)
-
-
-
Method Detail
-
createObjectMapper
public static com.fasterxml.jackson.databind.ObjectMapper createObjectMapper()
-
writeJson
public static void writeJson(Path jsonFile, Object object, com.fasterxml.jackson.databind.ObjectMapper objectMapper)
-
readJson
public static <T> T readJson(Path jsonFile, Class<T> clazz, com.fasterxml.jackson.databind.ObjectMapper objectMapper)
-
readJsonAndUpdate
public static <T> T readJsonAndUpdate(InputStream is, T object, com.fasterxml.jackson.databind.ObjectMapper objectMapper)
-
readJsonAndUpdate
public static <T> T readJsonAndUpdate(Path jsonFile, T object, com.fasterxml.jackson.databind.ObjectMapper objectMapper)
-
createJsonFactory
public static com.fasterxml.jackson.core.JsonFactory createJsonFactory()
-
writeJson
public static void writeJson(Writer writer, Consumer<com.fasterxml.jackson.core.JsonGenerator> consumer)
-
writeJson
public static void writeJson(Path file, Consumer<com.fasterxml.jackson.core.JsonGenerator> consumer)
-
parseJson
public static <T> T parseJson(Path file, Function<com.fasterxml.jackson.core.JsonParser,T> function)
-
parseJson
public static <T> T parseJson(String json, Function<com.fasterxml.jackson.core.JsonParser,T> function)
-
parseJson
public static <T> T parseJson(Reader reader, Function<com.fasterxml.jackson.core.JsonParser,T> function)
-
writeOptionalStringField
public static void writeOptionalStringField(com.fasterxml.jackson.core.JsonGenerator jsonGenerator, String fieldName, String value) throws IOException
- Throws:
IOException
-
writeOptionalEnumField
public static void writeOptionalEnumField(com.fasterxml.jackson.core.JsonGenerator jsonGenerator, String fieldName, Enum<?> value) throws IOException
- Throws:
IOException
-
writeOptionalBooleanField
public static void writeOptionalBooleanField(com.fasterxml.jackson.core.JsonGenerator jsonGenerator, String fieldName, boolean value, boolean defaultValue) throws IOException
- Throws:
IOException
-
writeOptionalFloatField
public static void writeOptionalFloatField(com.fasterxml.jackson.core.JsonGenerator jsonGenerator, String fieldName, float value) throws IOException
- Throws:
IOException
-
writeOptionalDoubleField
public static void writeOptionalDoubleField(com.fasterxml.jackson.core.JsonGenerator jsonGenerator, String fieldName, double value) throws IOException
- Throws:
IOException
-
writeOptionalDoubleField
public static void writeOptionalDoubleField(com.fasterxml.jackson.core.JsonGenerator jsonGenerator, String fieldName, double value, double defaultValue) throws IOException
- Throws:
IOException
-
writeOptionalIntegerField
public static void writeOptionalIntegerField(com.fasterxml.jackson.core.JsonGenerator jsonGenerator, String fieldName, int value) throws IOException
- Throws:
IOException
-
writeExtensions
public static <T> Set<String> writeExtensions(Extendable<T> extendable, com.fasterxml.jackson.core.JsonGenerator jsonGenerator, com.fasterxml.jackson.databind.SerializerProvider serializerProvider) throws IOException
- Throws:
IOException
-
writeExtensions
public static <T> Set<String> writeExtensions(Extendable<T> extendable, com.fasterxml.jackson.core.JsonGenerator jsonGenerator, com.fasterxml.jackson.databind.SerializerProvider serializerProvider, ExtensionProviders<? extends ExtensionJsonSerializer> supplier) throws IOException
- Throws:
IOException
-
writeExtensions
public static <T> Set<String> writeExtensions(Extendable<T> extendable, com.fasterxml.jackson.core.JsonGenerator jsonGenerator, com.fasterxml.jackson.databind.SerializerProvider serializerProvider, JsonUtil.SerializerSupplier supplier) throws IOException
- Throws:
IOException
-
writeExtensions
public static <T> Set<String> writeExtensions(Extendable<T> extendable, com.fasterxml.jackson.core.JsonGenerator jsonGenerator, boolean headerWanted, com.fasterxml.jackson.databind.SerializerProvider serializerProvider, ExtensionProviders<? extends ExtensionJsonSerializer> supplier) throws IOException
- Throws:
IOException
-
writeExtensions
public static <T> Set<String> writeExtensions(Extendable<T> extendable, com.fasterxml.jackson.core.JsonGenerator jsonGenerator, boolean headerWanted, com.fasterxml.jackson.databind.SerializerProvider serializerProvider, JsonUtil.SerializerSupplier supplier) throws IOException
- Throws:
IOException
-
updateExtensions
public static <T extends Extendable> List<Extension<T>> updateExtensions(com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.databind.DeserializationContext context, T extendable) throws IOException
Updates the extensions of the provided extendable with possibly partial definition read from JSON.Note that in order for this to work correctly, extension providers need to implement
ExtensionJsonSerializer.deserializeAndUpdate(com.fasterxml.jackson.core.JsonParser, com.fasterxml.jackson.databind.DeserializationContext, E)
.- Throws:
IOException
-
updateExtensions
public static <T extends Extendable> List<Extension<T>> updateExtensions(com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.databind.DeserializationContext context, ExtensionProviders<? extends ExtensionJsonSerializer> supplier, T extendable) throws IOException
Updates the extensions of the provided extendable with possibly partial definition read from JSON.Note that in order for this to work correctly, extension providers need to implement
ExtensionJsonSerializer.deserializeAndUpdate(com.fasterxml.jackson.core.JsonParser, com.fasterxml.jackson.databind.DeserializationContext, E)
.- Throws:
IOException
-
updateExtensions
public static <T extends Extendable> List<Extension<T>> updateExtensions(com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.databind.DeserializationContext context, JsonUtil.SerializerSupplier supplier, T extendable) throws IOException
- Throws:
IOException
-
updateExtensions
public static <T extends Extendable> List<Extension<T>> updateExtensions(com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.databind.DeserializationContext context, ExtensionProviders<? extends ExtensionJsonSerializer> supplier, Set<String> extensionsNotFound, T extendable) throws IOException
- Throws:
IOException
-
updateExtensions
public static <T extends Extendable> List<Extension<T>> updateExtensions(com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.databind.DeserializationContext context, JsonUtil.SerializerSupplier supplier, Set<String> extensionsNotFound, T extendable) throws IOException
Updates the extensions of the provided extendable with possibly partial definition read from JSON.Note that in order for this to work correctly, extension providers need to implement
ExtensionJsonSerializer.deserializeAndUpdate(com.fasterxml.jackson.core.JsonParser, com.fasterxml.jackson.databind.DeserializationContext, E)
.- Throws:
IOException
-
readExtensions
public static <T extends Extendable> List<Extension<T>> readExtensions(com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.databind.DeserializationContext context) throws IOException
- Throws:
IOException
-
readExtensions
public static <T extends Extendable> List<Extension<T>> readExtensions(com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.databind.DeserializationContext context, ExtensionProviders<? extends ExtensionJsonSerializer> supplier) throws IOException
- Throws:
IOException
-
readExtensions
public static <T extends Extendable> List<Extension<T>> readExtensions(com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.databind.DeserializationContext context, ExtensionProviders<? extends ExtensionJsonSerializer> supplier, Set<String> extensionsNotFound) throws IOException
- Throws:
IOException
-
readExtension
public static <T extends Extendable> Extension<T> readExtension(com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.databind.DeserializationContext context, ExtensionProviders<? extends ExtensionJsonSerializer> supplier, Set<String> extensionsNotFound) throws IOException
- Throws:
IOException
-
skip
public static void skip(com.fasterxml.jackson.core.JsonParser parser) throws IOException
Skip a part of a JSON document- Throws:
IOException
-
assertLessThanOrEqualToReferenceVersion
public static void assertLessThanOrEqualToReferenceVersion(String contextName, String elementName, String version, String referenceVersion)
-
assertGreaterThanReferenceVersion
public static void assertGreaterThanReferenceVersion(String contextName, String elementName, String version, String referenceVersion)
-
assertGreaterOrEqualThanReferenceVersion
public static void assertGreaterOrEqualThanReferenceVersion(String contextName, String elementName, String version, String referenceVersion)
-
assertLessThanReferenceVersion
public static void assertLessThanReferenceVersion(String contextName, String elementName, String version, String referenceVersion)
-
parseObject
public static void parseObject(com.fasterxml.jackson.core.JsonParser parser, JsonUtil.FieldHandler fieldHandler)
Parses an object from the current parser position, using the provided field handler. The parsing will expect the starting position to be START_OBJECT.
-
parsePolymorphicObject
public static void parsePolymorphicObject(com.fasterxml.jackson.core.JsonParser parser, JsonUtil.FieldHandler fieldHandler)
Parses an object from the current parser position, using the provided field handler. The parsing will accept the starting position to be either a START_OBJECT or a FIELD_NAME, see contract forJsonDeserializer.deserialize(JsonParser, DeserializationContext)
.
-
parseObject
public static void parseObject(com.fasterxml.jackson.core.JsonParser parser, boolean polymorphic, JsonUtil.FieldHandler fieldHandler)
Parses an object from the current parser position, using the provided field handler. Ifpolymorphic
istrue
, the parsing will accept the starting position to be either a START_OBJECT or a FIELD_NAME, see contract forJsonDeserializer.deserialize(JsonParser, DeserializationContext)
.
-
parseObjectArray
public static <T> void parseObjectArray(com.fasterxml.jackson.core.JsonParser parser, Consumer<T> objectAdder, Function<com.fasterxml.jackson.core.JsonParser,T> objectParser)
-
parseIntegerArray
public static List<Integer> parseIntegerArray(com.fasterxml.jackson.core.JsonParser parser)
-
parseLongArray
public static List<Long> parseLongArray(com.fasterxml.jackson.core.JsonParser parser)
-
parseFloatArray
public static List<Float> parseFloatArray(com.fasterxml.jackson.core.JsonParser parser)
-
parseDoubleArray
public static List<Double> parseDoubleArray(com.fasterxml.jackson.core.JsonParser parser)
-
parseStringArray
public static List<String> parseStringArray(com.fasterxml.jackson.core.JsonParser parser)
-
setSourceVersion
public static void setSourceVersion(com.fasterxml.jackson.databind.DatabindContext context, String version, String sourceVersionAttributeKey)
Saves the provided version into the context (typically aDeserializationContext
), for later retrieval.
-
getSourceVersion
public static String getSourceVersion(com.fasterxml.jackson.databind.DatabindContext context, String sourceVersionAttributeKey)
Reads the version from the context (typically aDeserializationContext
) where it has been previously stored.
-
readValue
public static <T> T readValue(com.fasterxml.jackson.databind.DeserializationContext context, com.fasterxml.jackson.core.JsonParser parser, Class<?> type)
Reads a value using the given deserialization context (instead of only using the parser reading method that recreates a context every time). Also handles readingnull
values.
-
readList
public static <T> List<T> readList(com.fasterxml.jackson.databind.DeserializationContext context, com.fasterxml.jackson.core.JsonParser parser, Class<?> type)
-
readSet
public static <T> Set<T> readSet(com.fasterxml.jackson.databind.DeserializationContext context, com.fasterxml.jackson.core.JsonParser parser, Class<?> type)
-
writeOptionalEnum
public static <T extends Enum> void writeOptionalEnum(com.fasterxml.jackson.core.JsonGenerator jsonGenerator, String field, Optional<T> optional) throws IOException
- Throws:
IOException
-
writeOptionalDouble
public static void writeOptionalDouble(com.fasterxml.jackson.core.JsonGenerator jsonGenerator, String field, OptionalDouble optional) throws IOException
- Throws:
IOException
-
writeOptionalBoolean
public static void writeOptionalBoolean(com.fasterxml.jackson.core.JsonGenerator jsonGenerator, String field, Optional<Boolean> optional) throws IOException
- Throws:
IOException
-
-