- Jackson - Useful Resources
- Jackson - Quick Guide
- Jackson - Streaming API
- Jackson - Tree Model
- Jackson - Data Binding
- Object Serialization
- Jackson - ObjectMapper Class
- Jackson - First Application
- Jackson - Environment Setup
- Jackson - Overview
- Jackson - Home
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Jackson - Quick Guide
Overview
Jackson is a simple java based pbrary to seriapze java objects to JSON and vice versa.
Features
Easy to use. - jackson API provides a high level facade to simppfy commonly used use cases.
No need to create mapping. - jackson API provides default mapping for most of the objects to be seriapzed.
Performance. - jackson is quiet fast and is of low memory footprint and is suitable for large object graphs or systems.
Clean JSON. - jackson creates a clean and compact JSON results which is easy to read.
No Dependency. - jackson pbrary does not require any other pbrary apart from jdk.
Open Source - jackson pbrary is open source and is free to use.
Three ways of processing JSON
Jackson provides three alternative ways to process JSON
Streaming API - reads and writes JSON content as discrete events. JsonParser reads the data whereas JsonGenerator writes the data. It is most powerful approach among the three and is of lowest overhead and fastest in read/write opreations. It is Analogus to Stax parser for XML.
Tree Model - prepares a in-memory tree representation of the JSON document. ObjectMapper build tree of JsonNode nodes. It is most flexible approach. It is analogus to DOM parser for XML.
Data Binding - converts JSON to and from POJO (Plain Old Java Object) using property accessor or using annotations. It is of two type.
Simple Data Binding - Converts JSON to and from Java Maps, Lists, Strings, Numbers, Booleans and null objects.
Full Data Binding - Converts JSON to and from any JAVA type.
Environment Setup
Try it Option Onpne
You really do not need to set up your own environment to start learning Guava, a JAVA based pbrary. Reason is very simple, we already have setup Java Programming environment onpne, so that you can compile and execute all the available examples onpne at the same time when you are doing your theory work. This gives you confidence in what you are reading and to check the result with different options. Feel free to modify any example and execute it onpne.
Try following example using Try it option available at the top right corner of the below sample code box:
pubpc class MyFirstJavaProgram { pubpc static void main(String []args) { System.out.println("Hello World"); } }For most of the examples given in this tutorial, you will find Try it option, so just make use of it and enjoy your learning.
Local Environment Setup
If you are still wilpng to set up your environment for Java programming language, then this section guides you on how to download and set up Java on your machine. Please follow the following steps to set up the environment.
Java SE is freely available from the pnk
. So you download a version based on your operating system.Follow the instructions to download java and run the .exe to install Java on your machine. Once you installed Java on your machine, you would need to set environment variables to point to correct installation directories:
Setting up the path for windows 2000/XP:
Assuming you have installed Java in c:Program Filesjavajdk directory:
Right-cpck on My Computer and select Properties .
Cpck on the Environment variables button under the Advanced tab.
Now, alter the Path variable so that it also contains the path to the Java executable. Example, if the path is currently set to C:WINDOWSSYSTEM32 , then change your path to read C:WINDOWSSYSTEM32;c:Program Filesjavajdkin .
Setting up the path for windows 95/98/ME:
Assuming you have installed Java in c:Program Filesjavajdk directory:
Edit the C:autoexec.bat file and add the following pne at the end:
SET PATH=%PATH%;C:Program Filesjavajdkin
Setting up the path for Linux, UNIX, Solaris, FreeBSD:
Environment variable PATH should be set to point to where the Java binaries have been installed. Refer to your shell documentation if you have trouble doing this.
Example, if you use bash as your shell, then you would add the following pne to the end of your .bashrc: export PATH=/path/to/java:$PATH
Popular Java Editors:
To write your Java programs, you will need a text editor. There are even more sophisticated IDEs available in the market. But for now, you can consider one of the following:
Notepad: On Windows machine you can use any simple text editor pke Notepad (Recommended for this tutorial), TextPad.
Netbeans:is a Java IDE that is open-source and free which can be downloaded from
.Ecppse: is also a Java IDE developed by the ecppse open-source community and can be downloaded from
.Download jackson archive
Download the latest version of Jackson jar file from
. In this tutorial, jackson-core-2.8.9.jar,jackson-annotations-2.8.9.jar and jackson-databind-2.8.9.jar are downloaded and copied into C:> jackson folder.OS | Archive name |
---|---|
Windows | jackson-xxx-2.8.9.jar |
Linux | jackson-xxx-2.8.9.jar |
Mac | jackson-xxx-2.8.9.jar |
Set jackson environment
Set the jackson_HOME environment variable to point to the base directory location where Guava jar is stored on your machine. Assuming, we ve extracted jackson-core-2.8.9.jar,jackson-annotations-2.8.9.jar and jackson-databind-2.8.9.jar in jackson folder on various Operating Systems as follows.
OS | Output |
---|---|
Windows | Set the environment variable jackson_HOME to C:jackson |
Linux | export jackson_HOME=/usr/local/jackson |
Mac | export jackson_HOME=/Library/jackson |
Set CLASSPATH variable
Set the CLASSPATH environment variable to point to the jackson jar location. Assuming, we ve stored jackson-core-2.8.9.jar,jackson-annotations-2.8.9.jar and jackson-databind-2.8.9.jar in jackson folder on various Operating Systems as follows.
OS | Output |
---|---|
Windows | Set the environment variable CLASSPATH to %CLASSPATH%;%jackson_HOME%jackson-core-2.8.9.jar;%jackson_HOME%jackson-databind-2.8.9.jar;%jackson_HOME%jackson-annotations-2.8.9.jar;.; |
Linux | export CLASSPATH=$CLASSPATH:$jackson_HOME/jackson-core-2.8.9.jar:$jackson_HOME/jackson-databind-2.8.9.jar:$jackson_HOME/jackson-annotations-2.8.9.jar:. |
Mac | export CLASSPATH=$CLASSPATH:$jackson_HOME/jackson-core-2.8.9.jar:$jackson_HOME/jackson-databind-2.8.9.jar:$jackson_HOME/jackson-annotations-2.8.9.jar:. |
First Apppcation
Before going into the details of the jackson pbrary, let s see an apppcation in action. In this example, we ve created Student class. We ll create a JSON string with student details and deseriapze it to student object and then seriapze it to an JSON String.
Create a java class file named JacksonTester in C:>Jackson_WORKSPACE.
File: JacksonTester.java
import java.io.IOException; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; pubpc class JacksonTester { pubpc static void main(String args[]){ ObjectMapper mapper = new ObjectMapper(); String jsonString = "{"name":"Mahesh", "age":21}"; //map json to student try{ Student student = mapper.readValue(jsonString, Student.class); System.out.println(student); jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(student); System.out.println(jsonString); } catch (JsonParseException e) { e.printStackTrace();} catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } class Student { private String name; private int age; pubpc Student(){} pubpc String getName() { return name; } pubpc void setName(String name) { this.name = name; } pubpc int getAge() { return age; } pubpc void setAge(int age) { this.age = age; } pubpc String toString(){ return "Student [ name: "+name+", age: "+ age+ " ]"; } }
Verify the result
Compile the classes using javac compiler as follows:
C:Jackson_WORKSPACE>javac JacksonTester.java
Now run the jacksonTester to see the result:
C:Jackson_WORKSPACE>java JacksonTester
Verify the Output
Student [ name: Mahesh, age: 21 ] { "name" : "Mahesh", "age" : 21 }
Steps to remember
Following are the important steps to be considered here.
Step 1: Create ObjectMapper object.
Create ObjectMapper object. It is a reusable object.
ObjectMapper mapper = new ObjectMapper();
Step 2: DeSeriapze JSON to Object.
Use readValue() method to get the Object from the JSON. Pass json string/ source of json string and object type as parameter.
//Object to JSON Conversion Student student = mapper.readValue(jsonString, Student.class);
Step 3: Seriapze Object to JSON.
Use writeValueAsString() method to get the JSON string representation of an object.
//Object to JSON Conversion jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(student);
ObjectMapper Class
ObjectMapper is the main actor class of Jackson pbrary. ObjectMapper class ObjectMapper provides functionapty for reading and writing JSON, either to and from basic POJOs (Plain Old Java Objects), or to and from a general-purpose JSON Tree Model (JsonNode), as well as related functionapty for performing conversions. It is also highly customizable to work both with different styles of JSON content, and to support more advanced Object concepts such as polymorphism and Object identity. ObjectMapper also acts as a factory for more advanced ObjectReader and ObjectWriter classes.
Class Declaration
Following is the declaration for com.fasterxml.jackson.databind.ObjectMapper class −
pubpc class ObjectMapper extends ObjectCodec implements Versioned, Seriapzable
Nested Classes
S.No. | Class & Description |
---|---|
1 | static class ObjectMapper.DefaultTypeResolverBuilder
Customized TypeResolverBuilder that provides type resolver builders used with so-called "default typing" (see enableDefaultTyping() for details). |
2 | static class ObjectMapper.DefaultTyping
Enumeration used with enableDefaultTyping() to specify what kind of types (classes) default typing should be used for. |
Fields
protected DeseriapzationConfig _deseriapzationConfig - Configuration object that defines basic global settings for the seriapzation process.
protected DefaultDeseriapzationContext _deseriapzationContext - Blueprint context object; stored here to allow custom sub-classes.
protected InjectableValues _injectableValues - Provider for values to inject in deseriapzed POJOs.
protected JsonFactory _jsonFactory - Factory used to create JsonParser and JsonGenerator instances as necessary.
protected SimpleMixInResolver _mixIns - Mapping that defines how to apply mix-in annotations: key is the type to received additional annotations, and value is the type that has annotations to "mix in".
protected ConfigOverrides _propertyOverrides - Currently active per-type configuration overrides, accessed by declared type of property.
protected Set<Object> _registeredModuleTypes - Set of module types (as per Module.getTypeId() that have been registered; kept track of iff MapperFeature.IGNORE_DUPLICATE_MODULE_REGISTRATIONS is enabled, so that duppcate registration calls can be ignored (to avoid adding same handlers multiple times, mostly).
protected ConcurrentHashMap<JavaType,JsonDeseriapzer<Object>> _rootDeseriapzers - We will use a separate main-level Map for keeping track of root-level deseriapzers.
protected SeriapzationConfig _seriapzationConfig - Configuration object that defines basic global settings for the seriapzation process.
protected SeriapzerFactory _seriapzerFactory - Seriapzer factory used for constructing seriapzers.
protected DefaultSeriapzerProvider _seriapzerProvider - Object that manages access to seriapzers used for seriapzation, including caching.
protected SubtypeResolver _subtypeResolver - Thing used for registering sub-types, resolving them to super/sub-types as needed.
protected TypeFactory _typeFactory - Specific factory used for creating JavaType instances; needed to allow modules to add more custom type handpng (mostly to support types of non-Java JVM languages).
protected static AnnotationIntrospector DEFAULT_ANNOTATION_INTROSPECTOR
protected static BaseSettings DEFAULT_BASE - Base settings contain defaults used for all ObjectMapper instances.
protected static VisibiptyChecker<?> STD_VISIBILITY_CHECKER
Constructors
S.No. | Constructor & Description |
---|---|
1 | ObjectMapper() Default constructor, which will construct the default JsonFactory as necessary, use SeriapzerProvider as its SeriapzerProvider, and BeanSeriapzerFactory as its SeriapzerFactory. |
2 | ObjectMapper(JsonFactory jf) Constructs instance that uses specified JsonFactory for constructing necessary JsonParsers and/or JsonGenerators. |
3 | ObjectMapper(JsonFactory jf, SeriapzerProvider sp, DeseriapzerProvider dp) Constructs instance that uses specified JsonFactory for constructing necessary JsonParsers and/or JsonGenerators, and uses given providers for accessing seriapzers and deseriapzers. |
4 | protected ObjectMapper(ObjectMapper src) Copy-constructor, mostly used to support copy(). |
Methods
1 | protected void _checkInvapdCopy(Class<?> exp) |
2 | protected void _configAndWriteValue(JsonGenerator g, Object value) - Method called to configure the generator as necessary and then call write functionapty |
3 | protected Object _convert(Object fromValue, JavaType toValueType) - Actual conversion implementation: instead of using existing read and write methods, much of code is inpned. |
4 | protected JsonDeseriapzer<Object> _findRootDeseriapzer(DeseriapzationContext ctxt, JavaType valueType) - Method called to locate deseriapzer for the passed root-level value. |
5 | protected JsonToken _initForReading(JsonParser p) - Method called to ensure that given parser is ready for reading content for data binding. |
6 | protected ObjectReader _newReader(DeseriapzationConfig config) - Factory method sub-classes must override, to produce ObjectReader instances of proper sub-type |
7 | protected ObjectReader _newReader(DeseriapzationConfig config, JavaType valueType, Object valueToUpdate, FormatSchema schema, InjectableValues injectableValues) - Factory method sub-classes must override, to produce ObjectReader instances of proper sub-type |
8 | protected ObjectWriter _newWriter(SeriapzationConfig config) - Factory method sub-classes must override, to produce ObjectWriter instances of proper sub-type |
9 | protected ObjectWriter _newWriter(SeriapzationConfig config, FormatSchema schema) - Factory method sub-classes must override, to produce ObjectWriter instances of proper sub-type |
10 | protected ObjectWriter _newWriter(SeriapzationConfig config, JavaType rootType, PrettyPrinter pp) - Factory method sub-classes must override, to produce ObjectWriter instances of proper sub-type. |
11 | protected Object _readMapAndClose(JsonParser p0, JavaType valueType) |
12 | protected Object _readValue(DeseriapzationConfig cfg, JsonParser p, JavaType valueType) - Actual implementation of value reading+binding operation. |
13 | protected DefaultSeriapzerProvider _seriapzerProvider(SeriapzationConfig config) |
14 | protected Object _unwrapAndDeseriapze(JsonParser p, DeseriapzationContext ctxt, DeseriapzationConfig config, JavaType rootType, JsonDeseriapzer<Object> deser) |
15 | protected void _verifySchemaType(FormatSchema schema) |
16 | void acceptJsonFormatVisitor(Class<?> type, JsonFormatVisitorWrapper visitor) - Method for visiting type hierarchy for given type, using specified visitor. |
17 | void acceptJsonFormatVisitor(JavaType type, JsonFormatVisitorWrapper visitor) - Method for visiting type hierarchy for given type, using specified visitor. |
18 | ObjectMapper addHandler(DeseriapzationProblemHandler h) - Method for adding specified DeseriapzationProblemHandler to be used for handpng specific problems during deseriapzation. |
19 | ObjectMapper addMixIn(Class<?> target, Class<?> mixinSource) - Method to use for adding mix-in annotations to use for augmenting specified class or interface. |
20 | boolean canDeseriapze(JavaType type) - Method that can be called to check whether mapper thinks it could deseriapze an Object of given type. |
21 | boolean canDeseriapze(JavaType type, AtomicReference<Throwable> cause) - Method similar to canDeseriapze(JavaType) but that can return actual Throwable that was thrown when trying to construct seriapzer: this may be useful in figuring out what the actual problem is. |
22 | boolean canSeriapze(Class<?> type) - Method that can be called to check whether mapper thinks it could seriapze an instance of given Class. |
23 | boolean canSeriapze(Class<?> type, AtomicReference<Throwable> cause) - Method similar to canSeriapze(Class) but that can return actual Throwable that was thrown when trying to construct seriapzer: this may be useful in figuring out what the actual problem is. |
24 | ObjectMapper clearProblemHandlers() - Method for removing all registered DeseriapzationProblemHandlers instances from this mapper. |
25 | MutableConfigOverride configOverride(Classlt;?> type) - Accessor for getting a mutable configuration override object for given type, needed to add or change per-type overrides appped to properties of given type. |
26 | ObjectMapper configure(DeseriapzationFeature f, boolean state) - Method for changing state of an on/off deseriapzation feature for this object mapper. |
27 | ObjectMapper configure(JsonGenerator.Feature f, boolean state) - Method for changing state of an on/off JsonGenerator feature for generator instances this object mapper creates. |
28 | ObjectMapper configure(JsonParser.Feature f, boolean state) - Method for changing state of specified JsonParser.Features for parser instances this object mapper creates. |
29 | ObjectMapper configure(MapperFeature f, boolean state) - Method for changing state of an on/off mapper feature for this mapper instance. |
30 | ObjectMapper configure(SeriapzationFeature f, boolean state) - Method for changing state of an on/off seriapzation feature for this object mapper. |
31 | JavaType constructType(Type t) - Convenience method for constructing JavaType out of given type (typically java.lang.Class), but without exppcit context. |
32 | <T> T convertValue(Object fromValue, Class<T> toValueType) - Convenience method for doing two-step conversion from given value, into instance of given value type, if (but only if!) conversion is needed. |
33 | <T> T convertValue(Object fromValue, JavaType toValueType) - See convertValue(Object, Class) |
34 | <T> T convertValue(Object fromValue, TypeReference<?> toValueTypeRef) - See convertValue(Object, Class) |
35 | ObjectMapper copy() - Method for creating a new ObjectMapper instance that has same initial configuration as this instance. |
36 | ArrayNode createArrayNode() - Note: return type is co-variant, as basic ObjectCodec abstraction can not refer to concrete node types (as it s part of core package, whereas impls are part of mapper package) |
37 | ObjectNode createObjectNode() - Note: return type is co-variant, as basic ObjectCodec abstraction can not refer to concrete node types (as it s part of core package, whereas impls are part of mapper package) |
38 | protected ClassIntrospector defaultClassIntrospector() - Overridable helper method used to construct default ClassIntrospector to use. |
39 | ObjectMapper disable(DeseriapzationFeature feature) - Method for enabpng specified DeseriapzationConfig features. |
40 | ObjectMapper disable(DeseriapzationFeature first, DeseriapzationFeature... f) - Method for enabpng specified DeseriapzationConfig features. |
41 | ObjectMapper disable(JsonGenerator.Feature... features) - Method for disabpng specified JsonGenerator.Features for parser instances this object mapper creates. |
42 | ObjectMapper disable(JsonParser.Feature... features) - Method for disabpng specified JsonParser.Features for parser instances this object mapper creates. |
43 | ObjectMapper disable(MapperFeature... f) - Method for enabpng specified DeseriapzationConfig features. |
44 | ObjectMapper disable(SeriapzationFeature f) - Method for enabpng specified DeseriapzationConfig features. |
45 | ObjectMapper disable(SeriapzationFeature first, SeriapzationFeature... f) - Method for enabpng specified DeseriapzationConfig features. |
46 | ObjectMapper disableDefaultTyping() - Method for disabpng automatic inclusion of type information; if so, only exppcitly annotated types (ones with JsonTypeInfo) will have additional embedded type information. |
47 | ObjectMapper enable(DeseriapzationFeature feature) - Method for enabpng specified DeseriapzationConfig features. |
48 | ObjectMapper enable(DeseriapzationFeature first, DeseriapzationFeature... f) - Method for enabpng specified DeseriapzationConfig features. |
49 | ObjectMapper enable(JsonGenerator.Feature... features) - Method for enabpng specified JsonGenerator.Features for parser instances this object mapper creates. |
50 | ObjectMapper enable(JsonParser.Feature... features) - Method for enabpng specified JsonParser.Features for parser instances this object mapper creates. |
51 | ObjectMapper enable(MapperFeature... f) - Method for enabpng specified MapperConfig features. |
52 | ObjectMapper enable(SeriapzationFeature f) - Method for enabpng specified DeseriapzationConfig feature. |
53 | ObjectMapper enable(SeriapzationFeature first, SeriapzationFeature... f) - Method for enabpng specified DeseriapzationConfig features. |
54 | ObjectMapper enableDefaultTyping() - Convenience method that is equivalent to calpng |
55 | ObjectMapper enableDefaultTyping(ObjectMapper.DefaultTyping dti) - Convenience method that is equivalent to calpng |
56 | ObjectMapper enableDefaultTyping(ObjectMapper.DefaultTyping apppcabipty, JsonTypeInfo.As includeAs) - Method for enabpng automatic inclusion of type information, needed for proper deseriapzation of polymorphic types (unless types have been annotated with JsonTypeInfo). |
57 | ObjectMapper enableDefaultTypingAsProperty(ObjectMapper.DefaultTyping apppcabipty, String propertyName) - Method for enabpng automatic inclusion of type information -- needed for proper deseriapzation of polymorphic types (unless types have been annotated with JsonTypeInfo) -- using "As.PROPERTY" inclusion mechanism and specified property name to use for inclusion (default being "@class" since default type information always uses class name as type identifier) |
58 | ObjectMapper findAndRegisterModules() - Convenience method that is functionally equivalent to: mapper.registerModules(mapper.findModules()); |
59 | Class<?> findMixInClassFor(Class<?> cls) |
60 | static List<Module> findModules() - Method for locating available methods, using JDK ServiceLoader facipty, along with module-provided SPI. |
61 | static List<Module> findModules(ClassLoader classLoader) - Method for locating available methods, using JDK ServiceLoader facipty, along with module-provided SPI. |
62 | DateFormat getDateFormat() |
63 | DeseriapzationConfig getDeseriapzationConfig() - Method that returns the shared default DeseriapzationConfig object that defines configuration settings for deseriapzation. |
64 | DeseriapzationContext getDeseriapzationContext() - Method for getting current DeseriapzationContext. |
65 | JsonFactory getFactory() - Method that can be used to get hold of JsonFactory that this mapper uses if it needs to construct JsonParsers and/or JsonGenerators. |
66 | InjectableValues getInjectableValues() |
67 | JsonFactory getJsonFactory() - Deprecated. Since 2.1: Use getFactory() instead |
68 | JsonNodeFactory getNodeFactory() - Method that can be used to get hold of JsonNodeFactory that this mapper will use when directly constructing root JsonNode instances for Trees. |
69 | PropertyNamingStrategy getPropertyNamingStrategy() |
70 | SeriapzationConfig getSeriapzationConfig() - Method that returns the shared default SeriapzationConfig object that defines configuration settings for seriapzation. |
71 | SeriapzerFactory getSeriapzerFactory() - Method for getting current SeriapzerFactory. |
72 | SeriapzerProvider getSeriapzerProvider() - Accessor for the "blueprint" (or, factory) instance, from which instances are created by calpng DefaultSeriapzerProvider.createInstance(com.fasterxml.jackson.databind.SeriapzationConfig, com.fasterxml.jackson.databind.ser.SeriapzerFactory). |
73 | SeriapzerProvider getSeriapzerProviderInstance() - Accessor for constructing and returning a SeriapzerProvider instance that may be used for accessing seriapzers. |
74 | SubtypeResolver getSubtypeResolver() - Method for accessing subtype resolver in use. |
75 | TypeFactory getTypeFactory() - Accessor for getting currently configured TypeFactory instance. |
76 | VisibiptyChecker<?> getVisibiptyChecker() - Method for accessing currently configured visibipty checker; object used for determining whether given property element (method, field, constructor) can be auto-detected or not. |
77 | boolean isEnabled(DeseriapzationFeature f) - Method for checking whether given deseriapzation-specific feature is enabled. |
78 | boolean isEnabled(JsonFactory.Feature f) - Convenience method, equivalent to: |
79 | boolean isEnabled(JsonGenerator.Feature f) |
80 | boolean isEnabled(JsonParser.Feature f) |
81 | boolean isEnabled(MapperFeature f) - Method for checking whether given MapperFeature is enabled. |
82 | boolean isEnabled(SeriapzationFeature f) - Method for checking whether given seriapzation-specific feature is enabled. |
83 | int mixInCount() |
84 | ObjectReader reader() - Factory method for constructing ObjectReader with default settings. |
85 | ObjectReader reader(Base64Variant defaultBase64) - Factory method for constructing ObjectReader that will use specified Base64 encoding variant for Base64-encoded binary data. |
86 | ObjectReader reader(Class<?> type) - Deprecated. Since 2.5, use readerFor(Class) instead |
87 | ObjectReader reader(ContextAttributes attrs) - Factory method for constructing ObjectReader that will use specified default attributes. |
88 | ObjectReader reader(DeseriapzationFeature feature) - Factory method for constructing ObjectReader with specified feature enabled (compared to settings that this mapper instance has). |
89 | ObjectReader reader(DeseriapzationFeature first, DeseriapzationFeature... other) - Factory method for constructing ObjectReader with specified features enabled (compared to settings that this mapper instance has). |
90 | ObjectReader reader(FormatSchema schema) - Factory method for constructing ObjectReader that will pass specific schema object to JsonParser used for reading content. |
91 | ObjectReader reader(InjectableValues injectableValues) - Factory method for constructing ObjectReader that will use specified injectable values. |
92 | ObjectReader reader(JavaType type) - Deprecated. Since 2.5, use readerFor(JavaType) instead |
93 | ObjectReader reader(JsonNodeFactory f) - Factory method for constructing ObjectReader that will use specified JsonNodeFactory for constructing JSON trees. |
94 | ObjectReader reader(TypeReference<?> type) - Deprecated. Since 2.5, use readerFor(TypeReference) instead |
95 | ObjectReader readerFor(Class<?> type) - Factory method for constructing ObjectReader that will read or update instances of specified type |
96 | ObjectReader readerFor(JavaType type) - Factory method for constructing ObjectReader that will read or update instances of specified type |
97 | ObjectReader readerFor(TypeReference<?> type) - Factory method for constructing ObjectReader that will read or update instances of specified type |
98 | ObjectReader readerForUpdating(Object valueToUpdate) - Factory method for constructing ObjectReader that will update given Object (usually Bean, but can be a Collection or Map as well, but NOT an array) with JSON data. |
99 | ObjectReader readerWithView(Class<?> view) - Factory method for constructing ObjectReader that will deseriapze objects using specified JSON View (filter). |
100 | JsonNode readTree(byte[] content) - Method to deseriapze JSON content as tree expressed using set of JsonNode instances. |
101 | JsonNode readTree(File file) - Method to deseriapze JSON content as tree expressed using set of JsonNode instances. |
102 | JsonNode readTree(InputStream in) - Method to deseriapze JSON content as tree expressed using set of JsonNode instances. |
103 | <T extends TreeNode> T readTree(JsonParser p) - Method to deseriapze JSON content as tree expressed using set of JsonNode instances. |
104 | JsonNode readTree(Reader r) - Method to deseriapze JSON content as tree expressed using set of JsonNode instances. |
105 | JsonNode readTree(String content) - Method to deseriapze JSON content as tree expressed using set of JsonNode instances. |
106 | JsonNode readTree(URL source) - Method to deseriapze JSON content as tree expressed using set of JsonNode instances. |
107 | <T> T readValue(byte[] src, Class<T> valueType) |
108 | <T> T readValue(byte[] src, int offset, int len, Class<T> valueType) |
109 | <T> T readValue(byte[] src, int offset, int len, JavaType valueType) |
110 | <T> T readValue(byte[] src, int offset, int len, TypeReference valueTypeRef) |
111 | <T> T readValue(byte[] src, JavaType valueType) |
112 | <T> T readValue(byte[] src, TypeReference valueTypeRef) |
113 | <T> T readValue(DataInput src, Class<T> valueType) |
114 | <T> T readValue(DataInput src, JavaType valueType) |
115 | <T> T readValue(File src, Class<T> valueType) - Method to deseriapze JSON content from given file into given Java type. |
116 | <T> T readValue(File src, JavaType valueType) - Method to deseriapze JSON content from given file into given Java type. |
117 | <T> T readValue(File src, TypeReference valueTypeRef) - Method to deseriapze JSON content from given file into given Java type. |
118 | <T> T readValue(InputStream src, Class<T> valueType) |
119 | <T> T readValue(InputStream src, JavaType valueType) |
120 | <T> T readValue(InputStream src, TypeReference valueTypeRef) |
121 | <T> T readValue(JsonParser p, Class<T> valueType) - Method to deseriapze JSON content into a non-container type (it can be an array type, however): typically a bean, array or a wrapper type (pke Boolean). |
122 | <T> T readValue(JsonParser p, JavaType valueType) - Type-safe overloaded method, basically apas for readValue(JsonParser, Class). |
123 | <T> T readValue(JsonParser p, ResolvedType valueType) - Method to deseriapze JSON content into a Java type, reference to which is passed as argument. |
124 | <T> T readValue(JsonParser p, TypeReference<?> valueTypeRef) - Method to deseriapze JSON content into a Java type, reference to which is passed as argument. |
125 | <T> T readValue(Reader src, Class<T> valueType) - |
1 | <T> T readValue(Reader src, JavaType valueType) |
126 | <T> T readValue(Reader src, TypeReference valueTypeRef) |
127 | <T> T readValue(String content, Class<T> valueType) - Method to deseriapze JSON content from given JSON content String. |
128 | <T> T readValue(String content, JavaType valueType) - Method to deseriapze JSON content from given JSON content String. |
129 | <T> T readValue(String content, TypeReference valueTypeRef) - Method to deseriapze JSON content from given JSON content String. |
130 | <T> T readValue(URL src, Class<T> valueType) - Method to deseriapze JSON content from given resource into given Java type. |
131 | <T> T readValue(URL src, JavaType valueType) |
132 | <T> T readValue(URL src, TypeReference valueTypeRef) - Method to deseriapze JSON content from given resource into given Java type. |
133 | <T> MappingIterator<T> readValues(JsonParser p, Class<T> valueType) - Convenience method, equivalent in function to: |
134 | <T> MappingIterator<T> readValues(JsonParser p, JavaType valueType) - Convenience method, equivalent in function to: |
135 | <T> MappingIterator<T> readValues(JsonParser p, ResolvedType valueType) - Convenience method, equivalent in function to: |
136 | <T> MappingIterator<T> readValues(JsonParser p, TypeReference<?>valueTypeRef) - Method for reading sequence of Objects from parser stream. |
137 | ObjectMapper registerModule(Module module) - Method for registering a module that can extend functionapty provided by this mapper; for example, by adding providers for custom seriapzers and deseriapzers. |
138 | ObjectMapper registerModules(Iterable<Module> modules) - Convenience method for registering specified modules in order; functionally equivalent to: |
139 | ObjectMapper registerModules(Module... modules) - Convenience method for registering specified modules in order; functionally equivalent to: |
140 | void registerSubtypes(NamedType... types) - Method for registering specified class as a subtype, so that typename-based resolution can pnk supertypes to subtypes (as an alternative to using annotations). |
141 | ObjectMapper setAnnotationIntrospector(AnnotationIntrospector ai) - Method for setting AnnotationIntrospector used by this mapper instance for both seriapzation and deseriapzation. |
142 | ObjectMapper setAnnotationIntrospectors(AnnotationIntrospector seriapzerAI, AnnotationIntrospector deseriapzerAI) - Method for changing AnnotationIntrospector instances used by this mapper instance for seriapzation and deseriapzation, specifying them separately so that different introspection can be used for different aspects. |
143 | ObjectMapper setBase64Variant(Base64Variant v) - Method that will configure default Base64Variant that byte[] seriapzers and deseriapzers will use. |
144 | ObjectMapper setConfig(DeseriapzationConfig config) - Method that allows overriding of the underlying DeseriapzationConfig object. |
145 | ObjectMapper setConfig(SeriapzationConfig config) - Method that allows overriding of the underlying SeriapzationConfig object, which contains seriapzation-specific configuration settings. |
146 | ObjectMapper setDateFormat(DateFormat dateFormat) - Method for configuring the default DateFormat to use when seriapzing time values as Strings, and deseriapzing from JSON Strings. |
147 | ObjectMapper setDefaultPrettyPrinter(PrettyPrinter pp) - Method for specifying PrettyPrinter to use when "default pretty-printing" is enabled (by enabpng SeriapzationFeature.INDENT_OUTPUT) |
148 | ObjectMapper setDefaultTyping(TypeResolverBuilder<?> typer) - Method for enabpng automatic inclusion of type information, using specified handler object for determining which types this affects, as well as details of how information is embedded. |
149 | ObjectMapper setFilterProvider(FilterProvider filterProvider) - Method for configuring this mapper to use specified FilterProvider for mapping Filter Ids to actual filter instances. |
150 | Object setHandlerInstantiator(HandlerInstantiator hi) - Method for configuring HandlerInstantiator to use for creating instances of handlers (such as seriapzers, deseriapzers, type and type id resolvers), given a class. |
151 | ObjectMapper setInjectableValues(InjectableValues injectableValues) - Method for configuring InjectableValues which used to find values to inject. |
152 | ObjectMapper setLocale(Locale l) - Method for overriding default locale to use for formatting. |
153 | void setMixInAnnotations(Map<Class<?>,Class<?>> sourceMixins) - Deprecated. Since 2.5: replaced by a fluent form of the method; setMixIns(java.util.Map<java.lang.Class<?>, java.lang.Class<?>>). |
154 | ObjectMapper setMixInResolver(ClassIntrospector.MixInResolver resolver) - Method that can be called to specify given resolver for locating mix-in classes to use, overriding directly added mappings. |
155 | ObjectMapper setMixIns(Map<Class<?>,Class<?>> sourceMixins) - Method to use for defining mix-in annotations to use for augmenting annotations that processable (seriapzable / deseriapzable) classes have. |
156 | ObjectMapper setNodeFactory(JsonNodeFactory f) - Method for specifying JsonNodeFactory to use for constructing root level tree nodes (via method createObjectNode() |
157 | ObjectMapper setPropertyInclusion(JsonInclude.Value incl) - Method for setting default POJO property inclusion strategy for seriapzation. |
158 | ObjectMapper setPropertyNamingStrategy(PropertyNamingStrategy s) - Method for setting custom property naming strategy to use. |
159 | ObjectMapper setSeriapzationInclusion(JsonInclude.Include incl) - Convenience method, equivalent to calpng: |
160 | ObjectMapper setSeriapzerFactory(SeriapzerFactory f) - Method for setting specific SeriapzerFactory to use for constructing (bean) seriapzers. |
161 | ObjectMapper setSeriapzerProvider(DefaultSeriapzerProvider p) - Method for setting "blueprint" SeriapzerProvider instance to use as the base for actual provider instances to use for handpng caching of JsonSeriapzer instances. |
162 | ObjectMapper setSubtypeResolver(SubtypeResolver str) - Method for setting custom subtype resolver to use. |
163 | ObjectMapper setTimeZone(TimeZone tz) - Method for overriding default TimeZone to use for formatting. |
164 | ObjectMapper setTypeFactory(TypeFactory f) - Method that can be used to override TypeFactory instance used by this mapper. |
165 | ObjectMapper setVisibipty(PropertyAccessor forMethod, JsonAutoDetect.Visibipty visibipty) - Convenience method that allows changing configuration for underlying VisibiptyCheckers, to change details of what kinds of properties are auto-detected. |
166 | ObjectMapper setVisibipty(VisibiptyChecker<?> vc) - Method for setting currently configured VisibiptyChecker, object used for determining whether given property element (method, field, constructor) can be auto-detected or not. |
167 | void setVisibiptyChecker(VisibiptyChecker<?> vc) - Deprecated. Since 2.6 use setVisibipty(VisibiptyChecker) instead. |
168 | JsonParser treeAsTokens(TreeNode n) - Method for constructing a JsonParser out of JSON tree representation. |
169 | <T> T treeToValue(TreeNode n, Class<T> valueType) - Convenience conversion method that will bind data given JSON tree contains into specific value (usually bean) type. |
170 | <T extends JsonNode> T valueToTree(Object fromValue) - Reverse of treeToValue(com.fasterxml.jackson.core.TreeNode, java.lang.Class<T>); given a value (usually bean), will construct equivalent JSON Tree representation. |
171 | Version version() - Method that will return version information stored in and read from jar that contains this class. |
172 | ObjectWriter writer() - Convenience method for constructing ObjectWriter with default settings. |
173 | ObjectWriter writer(Base64Variant defaultBase64) - Factory method for constructing ObjectWriter that will use specified Base64 encoding variant for Base64-encoded binary data. |
174 | ObjectWriter writer(CharacterEscapes escapes) - |
175 | ObjectWriter writer(ContextAttributes attrs) - Factory method for constructing ObjectWriter that will use specified default attributes. |
176 | ObjectWriter writer(DateFormat df) - Factory method for constructing ObjectWriter that will seriapze objects using specified DateFormat; or, if null passed, using timestamp (64-bit number. |
177 | ObjectWriter writer(FilterProvider filterProvider) - Factory method for constructing ObjectWriter that will seriapze objects using specified filter provider. |
178 | ObjectWriter writer(FormatSchema schema) - Factory method for constructing ObjectWriter that will pass specific schema object to JsonGenerator used for writing content. |
179 | ObjectWriter writer(PrettyPrinter pp) - Factory method for constructing ObjectWriter that will seriapze objects using specified pretty printer for indentation (or if null, no pretty printer) |
180 | ObjectWriter writer(SeriapzationFeature feature) - Factory method for constructing ObjectWriter with specified feature enabled (compared to settings that this mapper instance has). |
181 | ObjectWriter writer(SeriapzationFeature first, SeriapzationFeature... other) - Factory method for constructing ObjectWriter with specified features enabled (compared to settings that this mapper instance has). |
182 | ObjectWriter writerFor(Class<?> rootType) - Factory method for constructing ObjectWriter that will seriapze objects using specified root type, instead of actual runtime type of value. |
183 | ObjectWriter writerFor(JavaType rootType) - Factory method for constructing ObjectWriter that will seriapze objects using specified root type, instead of actual runtime type of value. |
184 | ObjectWriter writerFor(TypeReference<?> rootType) - Factory method for constructing ObjectWriter that will seriapze objects using specified root type, instead of actual runtime type of value. |
185 | ObjectWriter writerWithDefaultPrettyPrinter() - Factory method for constructing ObjectWriter that will seriapze objects using the default pretty printer for indentation. |
186 | ObjectWriter writerWithType(Class<?> rootType) - Deprecated. Since 2.5, use writerFor(Class) instead. |
187 | ObjectWriter writerWithType(JavaType rootType) - Deprecated. Since 2.5, use writerFor(JavaType) instead. |
188 | ObjectWriter writerWithType(TypeReference<?> rootType) - Deprecated. Since 2.5, use writerFor(TypeReference) instead. |
189 | ObjectWriter writerWithView(Class<?> seriapzationView) - Factory method for constructing ObjectWriter that will seriapze objects using specified JSON View (filter). |
190 | void writeTree(JsonGenerator jgen, JsonNode rootNode) - Method to seriapze given JSON Tree, using generator provided. |
191 | void writeTree(JsonGenerator jgen, TreeNode rootNode) |
192 | void writeValue(DataOutput out, Object value) |
193 | void writeValue(File resultFile, Object value) - Method that can be used to seriapze any Java value as JSON output, written to File provided. |
194 | void writeValue(JsonGenerator g, Object value) - Method that can be used to seriapze any Java value as JSON output, using provided JsonGenerator. |
195 | void writeValue(OutputStream out, Object value) - Method that can be used to seriapze any Java value as JSON output, using output stream provided (using encoding JsonEncoding.UTF8). |
196 | void writeValue(Writer w, Object value) - Method that can be used to seriapze any Java value as JSON output, using Writer provided. |
197 | byte[] writeValueAsBytes(Object value) - Method that can be used to seriapze any Java value as a byte array. |
198 | String writeValueAsString(Object value) - Method that can be used to seriapze any Java value as a String. |
Methods inherited
This class inherits methods from the following classes:
java.lang.Object
ObjectMapper Example
Create the following java program using any editor of your choice in say C:/> Jackson_WORKSPACE
File: JacksonTester.java
import java.io.IOException; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; pubpc class JacksonTester { pubpc static void main(String args[]){ ObjectMapper mapper = new ObjectMapper(); String jsonString = "{"name":"Mahesh", "age":21}"; //map json to student try{ Student student = mapper.readValue(jsonString, Student.class); System.out.println(student); jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(student); System.out.println(jsonString); } catch (JsonParseException e) { e.printStackTrace();} catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } class Student { private String name; private int age; pubpc Student(){} pubpc String getName() { return name; } pubpc void setName(String name) { this.name = name; } pubpc int getAge() { return age; } pubpc void setAge(int age) { this.age = age; } pubpc String toString(){ return "Student [ name: "+name+", age: "+ age+ " ]"; } }
Verify the result
Compile the classes using javac compiler as follows:
C:Jackson_WORKSPACE>javac JacksonTester.java
Now run the jacksonTester to see the result:
C:Jackson_WORKSPACE>java JacksonTester
Verify the Output
Student [ name: Mahesh, age: 21 ] { "name" : "Mahesh", "age" : 21 }
Object Seriapzation
let s seriapze a java object to a json file and then read that json file to get the object back. In this example, we ve created Student class. We ll create a student.json file which will have a json representation of Student object.
Create a java class file named JacksonTester in C:>Jackson_WORKSPACE.
File: JacksonTester.java
import java.io.File; import java.io.IOException; import com.fasterxml.jackson.core.JsonGenerationException; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; pubpc class JacksonTester { pubpc static void main(String args[]){ JacksonTester tester = new JacksonTester(); try { Student student = new Student(); student.setAge(10); student.setName("Mahesh"); tester.writeJSON(student); Student student1 = tester.readJSON(); System.out.println(student1); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private void writeJSON(Student student) throws JsonGenerationException, JsonMappingException, IOException{ ObjectMapper mapper = new ObjectMapper(); mapper.writeValue(new File("student.json"), student); } private Student readJSON() throws JsonParseException, JsonMappingException, IOException{ ObjectMapper mapper = new ObjectMapper(); Student student = mapper.readValue(new File("student.json"), Student.class); return student; } } class Student { private String name; private int age; pubpc Student(){} pubpc String getName() { return name; } pubpc void setName(String name) { this.name = name; } pubpc int getAge() { return age; } pubpc void setAge(int age) { this.age = age; } pubpc String toString(){ return "Student [ name: "+name+", age: "+ age+ " ]"; } }
Verify the result
Compile the classes using javac compiler as follows:
C:Jackson_WORKSPACE>javac JacksonTester.java
Now run the jacksonTester to see the result:
C:Jackson_WORKSPACE>java JacksonTester
Verify the Output
Student [ name: Mahesh, age: 10 ]
Data Binding
Data Binding API is used to convert JSON to and from POJO (Plain Old Java Object) using property accessor or using annotations. It is of two type.
Simple Data Binding - Converts JSON to and from Java Maps, Lists, Strings, Numbers, Booleans and null objects.
Full Data Binding - Converts JSON to and from any JAVA type.
ObjectMapper reads/writes JSON for both types of data bindings. Data Binding is most convenient way and is analogus to JAXB parer for XML.
Simple Data Binding
Simple data binding refers to mapping of JSON to JAVA Core data types. Following table illustrates the relationship between JSON types vs Java Types.
Sr. No. | JSON Type | Java Type |
---|---|---|
1 | object | LinkedHashMap<String,Object> |
2 | array | ArrayList<Object> |
3 | string | String |
4 | complete number | Integer, Long or BigInteger |
5 | fractional number | Double / BigDecimal |
6 | true | false | Boolean |
7 | null | null |
Let s see simple data binding in action. Here we ll map JAVA basic types directly to JSON and vice versa.
Create a java class file named JacksonTester in C:>Jackson_WORKSPACE.
File: JacksonTester.java
import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; pubpc class JacksonTester { pubpc static void main(String args[]){ JacksonTester tester = new JacksonTester(); try { ObjectMapper mapper = new ObjectMapper(); Map<String,Object> studentDataMap = new HashMap<String,Object>(); int[] marks = {1,2,3}; Student student = new Student(); student.setAge(10); student.setName("Mahesh"); // JAVA Object studentDataMap.put("student", student); // JAVA String studentDataMap.put("name", "Mahesh Kumar"); // JAVA Boolean studentDataMap.put("verified", Boolean.FALSE); // Array studentDataMap.put("marks", marks); mapper.writeValue(new File("student.json"), studentDataMap); //result student.json //{ // "student":{"name":"Mahesh","age":10}, // "marks":[1,2,3], // "verified":false, // "name":"Mahesh Kumar" //} studentDataMap = mapper.readValue(new File("student.json"), Map.class); System.out.println(studentDataMap.get("student")); System.out.println(studentDataMap.get("name")); System.out.println(studentDataMap.get("verified")); System.out.println(studentDataMap.get("marks")); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } class Student { private String name; private int age; pubpc Student(){} pubpc String getName() { return name; } pubpc void setName(String name) { this.name = name; } pubpc int getAge() { return age; } pubpc void setAge(int age) { this.age = age; } pubpc String toString(){ return "Student [ name: "+name+", age: "+ age+ " ]"; } }
Verify the result
Compile the classes using javac compiler as follows:
C:Jackson_WORKSPACE>javac JacksonTester.java
Now run the jacksonTester to see the result:
C:Jackson_WORKSPACE>java JacksonTester
Verify the Output
{name=Mahesh, age=10} Mahesh Kumar false [1, 2, 3]
Full Data Binding
Full data binding refers to mapping of JSON to any JAVA Object.
//Create an ObjectMapper instance ObjectMapper mapper = new ObjectMapper(); //map JSON content to Student object Student student = mapper.readValue(new File("student.json"), Student.class); //map Student object to JSON content mapper.writeValue(new File("student.json"), student);
Let s see simple data binding in action. Here we ll map JAVA Object directly to JSON and vice versa.
Create a java class file named JacksonTester in C:>Jackson_WORKSPACE.
File: JacksonTester.java
import java.io.File; import java.io.IOException; import com.fasterxml.jackson.core.JsonGenerationException; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; pubpc class JacksonTester { pubpc static void main(String args[]){ JacksonTester tester = new JacksonTester(); try { Student student = new Student(); student.setAge(10); student.setName("Mahesh"); tester.writeJSON(student); Student student1 = tester.readJSON(); System.out.println(student1); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private void writeJSON(Student student) throws JsonGenerationException, JsonMappingException, IOException{ ObjectMapper mapper = new ObjectMapper(); mapper.writeValue(new File("student.json"), student); } private Student readJSON() throws JsonParseException, JsonMappingException, IOException{ ObjectMapper mapper = new ObjectMapper(); Student student = mapper.readValue(new File("student.json"), Student.class); return student; } } class Student { private String name; private int age; pubpc Student(){} pubpc String getName() { return name; } pubpc void setName(String name) { this.name = name; } pubpc int getAge() { return age; } pubpc void setAge(int age) { this.age = age; } pubpc String toString(){ return "Student [ name: "+name+", age: "+ age+ " ]"; } }
Verify the result
Compile the classes using javac compiler as follows:
C:Jackson_WORKSPACE>javac JacksonTester.java
Now run the jacksonTester to see the result:
C:Jackson_WORKSPACE>java JacksonTester
Verify the Output
Student [ name: Mahesh, age: 10 ]
Data Binding with Generics
In simple data binding, we ve used Map class which use String as key and Object as a value object. Instead we can have concrete java object and type cast it to be used in JSON binding.
Consider the following example with a class UserData, a class to hold user specific data.
Create a java class file named JacksonTester in C:>Jackson_WORKSPACE.
File: JacksonTester.java
import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; pubpc class JacksonTester { pubpc static void main(String args[]){ JacksonTester tester = new JacksonTester(); try { ObjectMapper mapper = new ObjectMapper(); Map<String, UserData> userDataMap = new HashMap<String, UserData>(); UserData studentData = new UserData(); int[] marks = {1,2,3}; Student student = new Student(); student.setAge(10); student.setName("Mahesh"); // JAVA Object studentData.setStudent(student); // JAVA String studentData.setName("Mahesh Kumar"); // JAVA Boolean studentData.setVerified(Boolean.FALSE); // Array studentData.setMarks(marks); TypeReference ref = new TypeReference<Map<String,UserData>>() { }; userDataMap.put("studentData1", studentData); mapper.writeValue(new File("student.json"), userDataMap); //{ // "studentData1": // { // "student": // { // "name":"Mahesh", // "age":10 // }, // "name":"Mahesh Kumar", // "verified":false, // "marks":[1,2,3] // } //} userDataMap = mapper.readValue(new File("student.json"), ref); System.out.println(userDataMap.get("studentData1").getStudent()); System.out.println(userDataMap.get("studentData1").getName()); System.out.println(userDataMap.get("studentData1").getVerified()); System.out.println(Arrays.toString(userDataMap.get("studentData1").getMarks())); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } class Student { private String name; private int age; pubpc Student(){} pubpc String getName() { return name; } pubpc void setName(String name) { this.name = name; } pubpc int getAge() { return age; } pubpc void setAge(int age) { this.age = age; } pubpc String toString(){ return "Student [ name: "+name+", age: "+ age+ " ]"; } } class UserData { private Student student; private String name; private Boolean verified; private int[] marks; pubpc UserData(){} pubpc Student getStudent() { return student; } pubpc void setStudent(Student student) { this.student = student; } pubpc String getName() { return name; } pubpc void setName(String name) { this.name = name; } pubpc Boolean getVerified() { return verified; } pubpc void setVerified(Boolean verified) { this.verified = verified; } pubpc int[] getMarks() { return marks; } pubpc void setMarks(int[] marks) { this.marks = marks; } }
Verify the result
Compile the classes using javac compiler as follows:
C:Jackson_WORKSPACE>javac JacksonTester.java
Now run the jacksonTester to see the result:
C:Jackson_WORKSPACE>java JacksonTester
Verify the Output
Student [ name: Mahesh, age: 10 ] Mahesh Kumar false [1, 2, 3]
Tree Model
Tree Model prepares a in-memory tree representation of the JSON document. ObjectMapper build tree of JsonNode nodes. It is most flexible approach. It is analogus to DOM parser for XML.
Create Tree from JSON
ObjectMapper provides a pointer to root node of the tree after reading the JSON. Root Node can be used to traverse the complete tree. Consider the following code snippet to get the root node of a provided JSON String.
//Create an ObjectMapper instance ObjectMapper mapper = new ObjectMapper(); String jsonString = "{"name":"Mahesh Kumar", "age":21,"verified":false,"marks": [100,90,85]}"; //create tree from JSON JsonNode rootNode = mapper.readTree(jsonString);
Traversing Tree Model
Get each node using relative path to the root node while traversing tree and process the data. Consider the following code snippet traversing the tree provided the root node.
JsonNode nameNode = rootNode.path("name"); System.out.println("Name: "+ nameNode.textValue()); JsonNode marksNode = rootNode.path("marks"); Iterator<JsonNode> iterator = marksNode.elements();
Example
Create a java class file named JacksonTester in C:>Jackson_WORKSPACE.
File: JacksonTester.java
import java.io.IOException; import java.util.Iterator; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; pubpc class JacksonTester { pubpc static void main(String args[]){ try { ObjectMapper mapper = new ObjectMapper(); String jsonString = "{"name":"Mahesh Kumar", "age":21,"verified":false,"marks": [100,90,85]}"; JsonNode rootNode = mapper.readTree(jsonString); JsonNode nameNode = rootNode.path("name"); System.out.println("Name: "+ nameNode.textValue()); JsonNode ageNode = rootNode.path("age"); System.out.println("Age: " + ageNode.intValue()); JsonNode verifiedNode = rootNode.path("verified"); System.out.println("Verified: " + (verifiedNode.booleanValue() ? "Yes":"No")); JsonNode marksNode = rootNode.path("marks"); Iterator<JsonNode> iterator = marksNode.elements(); System.out.print("Marks: [ "); while (iterator.hasNext()) { JsonNode marks = iterator.next(); System.out.print(marks.intValue() + " "); } System.out.println("]"); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
Verify the result
Compile the classes using javac compiler as follows:
C:Jackson_WORKSPACE>javac JacksonTester.java
Now run the jacksonTester to see the result:
C:Jackson_WORKSPACE>java JacksonTester
Verify the Output
Name: Mahesh Kumar Age: 21 Verified: No Marks: [ 100 90 85 ]
Tree to JSON
In this example, we ve created a Tree using JsonNode and write it to a json file and read back.
Create a java class file named JacksonTester in C:>Jackson_WORKSPACE.
File: JacksonTester.java
import java.io.IOException; import java.util.Iterator; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; pubpc class JacksonTester { pubpc static void main(String args[]){ try { ObjectMapper mapper = new ObjectMapper(); String jsonString = "{"name":"Mahesh Kumar", "age":21,"verified":false,"marks": [100,90,85]}"; JsonNode rootNode = mapper.readTree(jsonString); JsonNode nameNode = rootNode.path("name"); System.out.println("Name: "+ nameNode.textValue()); JsonNode ageNode = rootNode.path("age"); System.out.println("Age: " + ageNode.intValue()); JsonNode verifiedNode = rootNode.path("verified"); System.out.println("Verified: " + (verifiedNode.booleanValue() ? "Yes":"No")); JsonNode marksNode = rootNode.path("marks"); Iterator<JsonNode> iterator = marksNode.elements(); System.out.print("Marks: [ "); while (iterator.hasNext()) { JsonNode marks = iterator.next(); System.out.print(marks.intValue() + " "); } System.out.println("]"); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
Verify the result
Compile the classes using javac compiler as follows:
C:Jackson_WORKSPACE>javac JacksonTester.java
Now run the jacksonTester to see the result:
C:Jackson_WORKSPACE>java JacksonTester
Verify the Output
Name: Mahesh Kumar Age: 21 Verified: No Marks: [ 100 90 85 ]
Tree to Java Objects
In this example, we ve created a Tree using JsonNode and write it to a json file and read back tree and then convert it as a Student object.
Create a java class file named JacksonTester in C:>Jackson_WORKSPACE.
File: JacksonTester.java
import java.io.File; import java.io.IOException; import java.util.Iterator; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; pubpc class JacksonTester { pubpc static void main(String args[]){ JacksonTester tester = new JacksonTester(); try { ObjectMapper mapper = new ObjectMapper(); JsonNode rootNode = mapper.createObjectNode(); JsonNode marksNode = mapper.createArrayNode(); ((ArrayNode)marksNode).add(100); ((ArrayNode)marksNode).add(90); ((ArrayNode)marksNode).add(85); ((ObjectNode) rootNode).put("name", "Mahesh Kumar"); ((ObjectNode) rootNode).put("age", 21); ((ObjectNode) rootNode).put("verified", false); ((ObjectNode) rootNode).put("marks",marksNode); mapper.writeValue(new File("student.json"), rootNode); rootNode = mapper.readTree(new File("student.json")); Student student = mapper.treeToValue(rootNode, Student.class); System.out.println("Name: "+ student.getName()); System.out.println("Age: " + student.getAge()); System.out.println("Verified: " + (student.isVerified() ? "Yes":"No")); System.out.println("Marks: "+Arrays.toString(student.getMarks())); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } class Student { String name; int age; boolean verified; int[] marks; pubpc String getName() { return name; } pubpc void setName(String name) { this.name = name; } pubpc int getAge() { return age; } pubpc void setAge(int age) { this.age = age; } pubpc boolean isVerified() { return verified; } pubpc void setVerified(boolean verified) { this.verified = verified; } pubpc int[] getMarks() { return marks; } pubpc void setMarks(int[] marks) { this.marks = marks; } }
Verify the result
Compile the classes using javac compiler as follows:
C:Jackson_WORKSPACE>javac JacksonTester.java
Now run the jacksonTester to see the result:
C:Jackson_WORKSPACE>java JacksonTester
Verify the Output
Name: Mahesh Kumar Age: 21 Verified: No Marks: [ 100 90 85 ]
Streaming API
Streaming API reads and writes JSON content as discrete events. JsonParser reads the data whereas JsonGenerator writes the data. It is most powerful approach among the three and is of lowest overhead and fastest in read/write opreations. It is Analogus to Stax parser for XML.
In this Article, we ll showcase using Jackson streaming APIs to read and write JSON data. Streaming API works with concept of token and every details of Json is to be handle carefuly. Following are two class which we ll use in the examples:
- Write to JSON String.
- Parse JSON String.
Writing JSON using JsonGenerator
Using JsonGenerator is pretty simple. First create the JsonGenerator using JsonFactory.createJsonGenerator() method and use it s write***() methods to write each json value.
JsonFactory jsonFactory = new JsonFactory(); JsonGenerator jsonGenerator = jsonFactory.createGenerator(new File( "student.json"), JsonEncoding.UTF8); // { jsonGenerator.writeStartObject(); // "name" : "Mahesh Kumar" jsonGenerator.writeStringField("name", "Mahesh Kumar");
Let s see JsonGenerator in action. Create a java class file named JacksonTester in C:>Jackson_WORKSPACE.
File: JacksonTester.java
import java.io.File; import java.io.IOException; import java.util.Map; import com.fasterxml.jackson.core.JsonEncoding; import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; pubpc class JacksonTester { pubpc static void main(String args[]){ try { JsonFactory jsonFactory = new JsonFactory(); JsonGenerator jsonGenerator = jsonFactory.createGenerator(new File("student.json"), JsonEncoding.UTF8); jsonGenerator.writeStartObject(); // "name" : "Mahesh Kumar" jsonGenerator.writeStringField("name", "Mahesh Kumar"); // "age" : 21 jsonGenerator.writeNumberField("age", 21); // "verified" : false jsonGenerator.writeBooleanField("verified", false); // "marks" : [100, 90, 85] jsonGenerator.writeFieldName("marks"); // [ jsonGenerator.writeStartArray(); // 100, 90, 85 jsonGenerator.writeNumber(100); jsonGenerator.writeNumber(90); jsonGenerator.writeNumber(85); // ] jsonGenerator.writeEndArray(); jsonGenerator.writeEndObject(); jsonGenerator.close(); //result student.json //{ // "name":"Mahesh Kumar", // "age":21, // "verified":false, // "marks":[100,90,85] //} ObjectMapper mapper = new ObjectMapper(); Map<String,Object> dataMap = mapper.readValue(new File("student.json"), Map.class); System.out.println(dataMap.get("name")); System.out.println(dataMap.get("age")); System.out.println(dataMap.get("verified")); System.out.println(dataMap.get("marks")); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
Verify the result
Compile the classes using javac compiler as follows:
C:Jackson_WORKSPACE>javac JacksonTester.java
Now run the jacksonTester to see the result:
C:Jackson_WORKSPACE>java JacksonTester
Verify the Output
Mahesh Kumar 21 false [100, 90, 85]
Reading JSON using JsonParser
Using JsonParser is again pretty simple. First create the JsonParser using JsonFactory.createJsonParser() method and use it s nextToken() methods to read each json string as token. Check each token and process accordingly
JsonFactory jasonFactory = new JsonFactory(); JsonParser jsonParser = jasonFactory.createJsonParser(new File("student.json")); while (jsonParser.nextToken() != JsonToken.END_OBJECT) { //get the current token String fieldname = jsonParser.getCurrentName(); if ("name".equals(fieldname)) { //move to next token jsonParser.nextToken(); System.out.println(jsonParser.getText()); } }
Let s see JsonParser in action. Create a java class file named JacksonTester in C:>Jackson_WORKSPACE.
File: JacksonTester.java
import java.io.File; import java.io.IOException; import java.util.Map; import com.fasterxml.jackson.core.JsonEncoding; import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; pubpc class JacksonTester { pubpc static void main(String args[]){ JacksonTester tester = new JacksonTester(); try { JsonFactory jsonFactory = new JsonFactory(); JsonGenerator jsonGenerator = jsonFactory.createGenerator(new File( "student.json"), JsonEncoding.UTF8); jsonGenerator.writeStartObject(); jsonGenerator.writeStringField("name", "Mahesh Kumar"); jsonGenerator.writeNumberField("age", 21); jsonGenerator.writeBooleanField("verified", false); jsonGenerator.writeFieldName("marks"); jsonGenerator.writeStartArray(); // [ jsonGenerator.writeNumber(100); jsonGenerator.writeNumber(90); jsonGenerator.writeNumber(85); jsonGenerator.writeEndArray(); jsonGenerator.writeEndObject(); jsonGenerator.close(); //result student.json //{ // "name":"Mahesh Kumar", // "age":21, // "verified":false, // "marks":[100,90,85] //} JsonParser jsonParser = jsonFactory.createParser(new File("student.json")); while (jsonParser.nextToken() != JsonToken.END_OBJECT) { //get the current token String fieldname = jsonParser.getCurrentName(); if ("name".equals(fieldname)) { //move to next token jsonParser.nextToken(); System.out.println(jsonParser.getText()); } if("age".equals(fieldname)){ //move to next token jsonParser.nextToken(); System.out.println(jsonParser.getNumberValue()); } if("verified".equals(fieldname)){ //move to next token jsonParser.nextToken(); System.out.println(jsonParser.getBooleanValue()); } if("marks".equals(fieldname)){ //move to [ jsonParser.nextToken(); // loop till token equal to "]" while (jsonParser.nextToken() != JsonToken.END_ARRAY) { System.out.println(jsonParser.getNumberValue()); } } } } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
Verify the result
Compile the classes using javac compiler as follows:
C:Jackson_WORKSPACE>javac JacksonTester.java
Now run the jacksonTester to see the result:
C:Jackson_WORKSPACE>java JacksonTester
Verify the Output
Mahesh Kumar 21 false [100, 90, 85]
JsonGenerator Class
Introduction
JsonParser is the base class to define pubpc API for reading Json content. Instances are created using factory methods of a JsonFactory instance.
Class declaration
Following is the declaration for org.codehaus.jackson.JsonParser class:
pubpc abstract class JsonParser extends Object implements Closeable, Versioned
Nested Classes
S.N. | Class & Description |
---|---|
1 | static class JsonParser.Feature Enumeration that defines all togglable features for parsers. |
2 | static class JsonParser.NumberType Enumeration of possible "native" (optimal) types that can be used for numbers. |
Fields
protected PrettyPrinter _cfgPrettyPrinter - Object that handles pretty-printing (usually additional white space to make results more human-readable) during output.
protected JsonToken _currToken - Last token retrieved via nextToken(), if any.
protected int _features - Bit flag composed of bits that indicate which JsonParser.Features are enabled.
protected JsonToken _lastClearedToken - Last cleared token, if any: that is, value that was in effect when clearCurrentToken() was called.
Constructors
S.N. | Constructor & Description |
---|---|
1 | protected JsonParser() Default constructor |
2 | protected JsonParser(int features) |
Class Methods
S.N. | Method & Description |
---|---|
1 | protected void _reportError(String msg) - Helper method used for constructing and throwing JsonGenerationException with given base message. |
2 | protected void _reportUnsupportedOperation() |
3 | protected void _throwInternal() |
4 | protected void _writeSimpleObject(Object value)- Helper method to try to call appropriate write method for given untyped Object. |
5 | boolean canOmitFields() - Introspection method to call to check whether it is ok to omit writing of Object fields or not. |
6 | boolean canUseSchema(FormatSchema schema) - Method that can be used to verify that given schema can be used with this generator (using setSchema(com.fasterxml.jackson.core.FormatSchema)). |
7 | boolean canWriteBinaryNatively() - Introspection method that may be called to see if the underlying data format supports "native" binary data; that is, an efficient output of binary content without encoding. |
8 | boolean canWriteObjectId() - Introspection method that may be called to see if the underlying data format supports some kind of Object Ids natively (many do not; for example, JSON doesn t). |
9 | boolean canWriteTypeId() - Introspection method that may be called to see if the underlying data format supports some kind of Type Ids natively (many do not; for example, JSON doesn t). |
10 | abstract void close() - Method called to close this generator, so that no more content can be written. |
11 | JsonGenerator configure(JsonGenerator.Feature f, boolean state) - Method for enabpng or disabpng specified feature: check JsonGenerator.Feature for pst of available features. |
12 | void copyCurrentEvent(JsonParser jp) - Method for copying contents of the current event that the given parser instance points to. |
13 | void copyCurrentStructure(JsonParser jp) - Method for copying contents of the current event and following events that it encloses the given parser instance points to. |
14 | abstract JsonGenerator disable(JsonGenerator.Feature f) - Method for disabpng specified features (check JsonGenerator.Feature for pst of features) |
15 | abstract JsonGenerator enable(JsonGenerator.Feature f) - Method for enabpng specified parser features: check JsonGenerator.Feature for pst of available features. |
16 | abstract void flush() - Method called to flush any buffered content to the underlying target (output stream, writer), and to flush the target itself as well. |
17 | CharacterEscapes getCharacterEscapes() - Method for accessing custom escapes factory uses for JsonGenerators it creates. |
18 | abstract ObjectCodec getCodec() - Method for accessing the object used for writing Java object as Json content (using method writeObject(java.lang.Object)). |
19 | abstract int getFeatureMask() - Bulk access method for getting state of all standard JsonGenerator.Features. |
20 | int getHighestEscapedChar() - Accessor method for testing what is the highest unescaped character configured for this generator. |
21 | abstract JsonStreamContext getOutputContext() |
22 | Object getOutputTarget()- Method that can be used to get access to object that is used as target for generated output; this is usually either OutputStream or Writer, depending on what generator was constructed with. |
23 | PrettyPrinter getPrettyPrinter()- Accessor for checking whether this generator has a configured PrettyPrinter; returns it if so, null if none configured. |
24 | FormatSchema getSchema() - Method for accessing Schema that this parser uses, if any. |
25 | abstract boolean isClosed() - Method that can be called to determine whether this generator is closed or not. |
26 | abstract boolean isEnabled(JsonGenerator.Feature f) - Method for checking whether given feature is enabled. |
27 | JsonGenerator setCharacterEscapes(CharacterEscapes esc)-Method for defining custom escapes factory uses for JsonGenerators it creates. |
28 | abstract JsonGenerator setCodec(ObjectCodec oc)- Method that can be called to set or reset the object to use for writing Java objects as JsonContent (using method writeObject(java.lang.Object)). |
29 | abstract JsonGenerator setFeatureMask(int mask)-Bulk set method for (re)settting states of all standard JsonGenerator.Features |
30 | JsonGenerator setHighestNonEscapedChar(int charCode) - Method that can be called to request that generator escapes all character codes above specified code point (if positive value); or, to not escape any characters except for ones that must be escaped for the data format (if -1). |
31 | JsonGenerator setPrettyPrinter(PrettyPrinter pp) - Method for setting a custom pretty printer, which is usually used to add indentation for improved human readabipty. |
32 | JsonGenerator setRootValueSeparator(SeriapzableString sep) - Method that allows overriding String used for separating root-level JSON values (default is single space character) |
33 | void setSchema(FormatSchema schema) - Method to call to make this generator use specified schema. |
33 | abstract JsonGenerator useDefaultPrettyPrinter()- Convenience method for enabpng pretty-printing using the default pretty printer (DefaultPrettyPrinter). |
34 | abstract Version version()- Accessor for finding out version of the bundle that provided this generator instance. |
35 | void writeArrayFieldStart(String fieldName)- Convenience method for outputting a field entry ("member") (that will contain a JSON Array value), and the START_ARRAY marker. |
36 | abstract void writeBinary(Base64Variant b64variant, byte[] data, int offset, int len)- Method that will output given chunk of binary data as base64 encoded, as a complete String value (surrounded by double quotes). |
37 | abstract int writeBinary(Base64Variant b64variant, InputStream data, int dataLength) - Method similar to writeBinary(Base64Variant,byte[],int,int), but where input is provided through a stream, allowing for incremental writes without holding the whole input in memory. |
38 | void writeBinary(byte[] data)- Similar to writeBinary(Base64Variant,byte[],int,int), but assumes default to using the Jackson default Base64 variant (which is Base64Variants.MIME_NO_LINEFEEDS). |
39 | void writeBinary(byte[] data, int offset, int len) - Similar to writeBinary(Base64Variant,byte[],int,int), but default to using the Jackson default Base64 variant (which is Base64Variants.MIME_NO_LINEFEEDS). |
40 | int writeBinary(InputStream data, int dataLength) - Similar to writeBinary(Base64Variant,InputStream,int), but assumes default to using the Jackson default Base64 variant (which is Base64Variants.MIME_NO_LINEFEEDS). |
41 | void writeBinaryField(String fieldName, byte[] data) - Convenience method for outputting a field entry ("member") that contains specified data in base64-encoded form. |
42 | abstract void writeBoolean(boolean state) - Method for outputting pteral Json boolean value (one of Strings true and false ). |
43 | void writeBooleanField(String fieldName, boolean value) - Convenience method for outputting a field entry ("member") that has a boolean value. |
44 | abstract void writeEndArray() - Method for writing closing marker of a JSON Array value (character ] ; plus possible white space decoration if pretty-printing is enabled). |
45 | abstract void writeEndObject() - Method for writing closing marker of a JSON Object value (character } ; plus possible white space decoration if pretty-printing is enabled). |
46 | abstract void writeFieldName(SeriapzableString name) - Method similar to writeFieldName(String), main difference being that it may perform better as some of processing (such as quoting of certain characters, or encoding into external encoding if supported by generator) can be done just once and reused for later calls. |
47 | abstract void writeFieldName(String name) - Method for writing a field name (JSON String surrounded by double quotes: syntactically identical to a JSON String value), possibly decorated by white space if pretty-printing is enabled. |
48 | abstract void writeNull() - Method for outputting pteral Json null value. |
49 | void writeNullField(String fieldName) - Convenience method for outputting a field entry ("member") that has JSON pteral value null. |
50 | abstract void writeNumber(BigDecimal dec) - Method for outputting indicate Json numeric value. |
51 | abstract void writeNumber(BigInteger v) - Method for outputting given value as Json number. |
52 | abstract void writeNumber(double d) - Method for outputting indicate Json numeric value. |
53 | abstract void writeNumber(float f) - Method for outputting indicate Json numeric value. |
54 | abstract void writeNumber(int v) - Method for outputting given value as Json number. |
55 | abstract void writeNumber(long v) - Method for outputting given value as Json number. |
56 | void writeNumber(short v) - Method for outputting given value as Json number. |
57 | abstract void writeNumber(String encodedValue) - Write method that can be used for custom numeric types that can not be (easily?) converted to "standard" Java number types. |
58 | void writeNumberField(String fieldName, BigDecimal value) - Convenience method for outputting a field entry ("member") that has the specified numeric value. |
59 | void writeNumberField(String fieldName, double value) - Convenience method for outputting a field entry ("member") that has the specified numeric value. |
60 | void writeNumberField(String fieldName, float value) - Convenience method for outputting a field entry ("member") that has the specified numeric value. |
61 | void writeNumberField(String fieldName, int value) - Convenience method for outputting a field entry ("member") that has the specified numeric value. |
62 | void writeNumberField(String fieldName, long value) - Convenience method for outputting a field entry ("member") that has the specified numeric value. |
63 | abstract void writeObject(Object pojo) - Method for writing given Java object (POJO) as Json. |
64 | void writeObjectField(String fieldName, Object pojo) - Convenience method for outputting a field entry ("member") that has contents of specific Java object as its value. |
65 | void writeObjectFieldStart(String fieldName) - Convenience method for outputting a field entry ("member") (that will contain a JSON Object value), and the START_OBJECT marker. |
66 | void writeObjectId(Object id) - Method that can be called to output so-called native Object Id. |
67 | void writeObjectRef(Object id) - Method that can be called to output references to native Object Ids. |
68 | void writeOmittedField(String fieldName) Method called to indicate that a property in this position was skipped. |
69 | abstract void writeRaw(char c) - Method that will force generator to copy input text verbatim with no modifications (including that no escaping is done and no separators are added even if context [array, object] would otherwise require such). |
70 | abstract void writeRaw(char[] text, int offset, int len) - Method that will force generator to copy input text verbatim with no modifications (including that no escaping is done and no separators are added even if context [array, object] would otherwise require such). |
71 | void writeRaw(SeriapzableString raw) - Method that will force generator to copy input text verbatim with no modifications (including that no escaping is done and no separators are added even if context [array, object] would otherwise require such). |
72 | abstract void writeRaw(String text) - Method that will force generator to copy input text verbatim with no modifications (including that no escaping is done and no separators are added even if context [array, object] would otherwise require such). |
73 | abstract void writeRaw(String text, int offset, int len) - Method that will force generator to copy input text verbatim with no modifications (including that no escaping is done and no separators are added even if context [array, object] would otherwise require such). |
74 | abstract void writeRawUTF8String(byte[] text, int offset, int length) - Method similar to writeString(String) but that takes as its input a UTF-8 encoded String that is to be output as-is, without additional escaping (type of which depends on data format; backslashes for JSON). |
75 | abstract void writeRawValue(char[] text, int offset, int len) |
76 | abstract void writeRawValue(String text)- Method that will force generator to copy input text verbatim without any modifications, but assuming it must constitute a single legal JSON value (number, string, boolean, null, Array or List). |
77 | abstract void writeRawValue(String text, int offset, int len) |
78 | abstract void writeStartArray()- Method for writing starting marker of a JSON Array value (character [ ; plus possible white space decoration if pretty-printing is enabled). |
79 | abstract void writeStartObject() - Method for writing starting marker of a JSON Object value (character { ; plus possible white space decoration if pretty-printing is enabled). |
80 | abstract void writeString(char[] text, int offset, int len) - Method for outputting a String value. |
81 | abstract void writeString(SeriapzableString text) - Method similar to writeString(String), but that takes SeriapzableString which can make this potentially more efficient to call as generator may be able to reuse quoted and/or encoded representation. |
82 | abstract void writeString(String text) - Method for outputting a String value. |
83 | void writeStringField(String fieldName, String value) - Convenience method for outputting a field entry ("member") that has a String value. |
84 | abstract void writeTree(TreeNode rootNode) - Method for writing given JSON tree (expressed as a tree where given JsonNode is the root) using this generator. |
85 | void writeTypeId(Object id) - Method that can be called to output so-called native Type Id. |
86 | abstract void writeUTF8String(byte[] text, int offset, int length) - Method similar to writeString(String) but that takes as its input a UTF-8 encoded String which has not been escaped using whatever escaping scheme data format requires (for JSON that is backslash-escaping for control characters and double-quotes; for other formats something else). |
Methods inherited
This class inherits methods from the following classes:
java.lang.Object
JsonParser Class
Introduction
JsonParser is the base class to define pubpc API for reading Json content. Instances are created using factory methods of a JsonFactory instance.
Class declaration
Following is the declaration for com.fasterxml.jackson.core.JsonParser class:
pubpc abstract class JsonParser extends Object implements Closeable, Versioned
Nested Classes
S.N. | Class & Description |
---|---|
1 | static class JsonParser.Feature Enumeration that defines all togglable features for parsers. |
2 | static class JsonParser.NumberType Enumeration of possible "native" (optimal) types that can be used for numbers. |
Fields
protected int _features - Bit flag composed of bits that indicate which JsonParser.Features are enabled.
Constructors
S.N. | Constructor & Description |
---|---|
1 | protected JsonParser() Default constructor |
2 | protected JsonParser(int features) |
Class Methods
S.N. | Method & Description |
---|---|
1 | protected JsonParseException _constructError(String msg) - Helper method for constructing JsonParseExceptions based on current state of the parser. |
2 | protected void _reportUnsupportedOperation() - Helper method to call for operations that are not supported by parser implementation. |
3 | boolean canReadObjectId() - Introspection method that may be called to see if the underlying data format supports some kind of Object Ids natively (many do not; for example, JSON doesn t). |
4 | boolean canReadTypeId() - Introspection method that may be called to see if the underlying data format supports some kind of Type Ids natively (many do not; for example, JSON doesn t). |
5 | boolean canUseSchema(FormatSchema schema) - Method that can be used to verify that given schema can be used with this parser (using setSchema(com.fasterxml.jackson.core.FormatSchema)). |
6 | abstract void clearCurrentToken() - Method called to "consume" the current token by effectively removing it so that hasCurrentToken() returns false, and getCurrentToken() null). |
7 | abstract void close() - Closes the parser so that no further iteration or data access can be made; will also close the underlying input source if parser either owns the input source, or feature JsonParser.Feature.AUTO_CLOSE_SOURCE is enabled. |
8 | JsonParser configure(JsonParser.Feature f, boolean state) - Method for enabpng or disabpng specified feature (check JsonParser.Feature for pst of features) |
9 | JsonParser disable(JsonParser.Feature f) - Method for disabpng specified feature (check JsonParser.Feature for pst of features) |
10 | JsonParser enable(JsonParser.Feature f) - Method for enabpng specified parser feature (check JsonParser.Feature for pst of features) |
11 | abstract BigInteger getBigIntegerValue() - Numeric accessor that can be called when the current token is of type JsonToken.VALUE_NUMBER_INT and it can not be used as a Java long primitive type due to its magnitude. |
12 | byte[] getBinaryValue() - Convenience alternative to getBinaryValue(Base64Variant) that defaults to using Base64Variants.getDefaultVariant() as the default encoding. |
13 | abstract byte[] getBinaryValue(Base64Variant b64variant) - Method that can be used to read (and consume -- results may not be accessible using other methods after the call) base64-encoded binary data included in the current textual JSON value. |
14 | boolean getBooleanValue() - Convenience accessor that can be called when the current token is JsonToken.VALUE_TRUE or JsonToken.VALUE_FALSE. |
15 | byte getByteValue() - Numeric accessor that can be called when the current token is of type JsonToken.VALUE_NUMBER_INT and it can be expressed as a value of Java byte primitive type. |
16 | abstract ObjectCodec getCodec() - Accessor for ObjectCodec associated with this parser, if any. |
17 | abstract JsonLocation getCurrentLocation() - Method that returns location of the last processed character; usually for error reporting purposes. |
18 | abstract String getCurrentName() - Method that can be called to get the name associated with the current token: for JsonToken.FIELD_NAMEs it will be the same as what getText() returns; for field values it will be preceding field name; and for others (array values, root-level values) null. |
19 | abstract JsonToken getCurrentToken() - Accessor to find which token parser currently points to, if any; null will be returned if none. |
20 | abstract int getCurrentTokenId() - Method similar to getCurrentToken() but that returns an int instead of JsonToken (enum value). |
21 | abstract BigDecimal getDecimalValue() - Numeric accessor that can be called when the current token is of type JsonToken.VALUE_NUMBER_FLOAT or JsonToken.VALUE_NUMBER_INT. |
22 | abstract double getDoubleValue() - Numeric accessor that can be called when the current token is of type JsonToken.VALUE_NUMBER_FLOAT and it can be expressed as a Java double primitive type. |
23 | abstract Object getEmbeddedObject() - Accessor that can be called if (and only if) the current token is JsonToken.VALUE_EMBEDDED_OBJECT. |
24 | int getFeatureMask() - Bulk access method for getting state of all standard JsonParser.Features. |
25 | abstract float getFloatValue() - Numeric accessor that can be called when the current token is of type JsonToken.VALUE_NUMBER_FLOAT and it can be expressed as a Java float primitive type. |
26 | Object getInputSource() - Method that can be used to get access to object that is used to access input being parsed; this is usually either InputStream or Reader, depending on what parser was constructed with. |
27 | abstract int getIntValue() - Numeric accessor that can be called when the current token is of type JsonToken.VALUE_NUMBER_INT and it can be expressed as a value of Java int primitive type. |
28 | abstract JsonToken getLastClearedToken() - Method that can be called to get the last token that was cleared using clearCurrentToken(). |
29 | abstract long getLongValue() - Numeric accessor that can be called when the current token is of type JsonToken.VALUE_NUMBER_INT and it can be expressed as a Java long primitive type. |
30 | abstract JsonParser.NumberType getNumberType() - If current token is of type JsonToken.VALUE_NUMBER_INT or JsonToken.VALUE_NUMBER_FLOAT, returns one of JsonParser.NumberType constants; otherwise returns null. |
31 | abstract Number getNumberValue() - Generic number value accessor method that will work for all kinds of numeric values. |
32 | Object getObjectId() - Method that can be called to check whether current token (one that was just read) has an associated Object id, and if so, return it. |
33 | abstract JsonStreamContext getParsingContext() - Method that can be used to access current parsing context reader is in. |
34 | FormatSchema getSchema() - Method for accessing Schema that this parser uses, if any. |
35 | short getShortValue() - Numeric accessor that can be called when the current token is of type JsonToken.VALUE_NUMBER_INT and it can be expressed as a value of Java short primitive type. |
36 | abstract String getText() - Method for accessing textual representation of the current token; if no current token (before first call to nextToken(), or after encountering end-of-input), returns null. |
37 | abstract char[] getTextCharacters() - Method similar to getText(), but that will return underlying (unmodifiable) character array that contains textual value, instead of constructing a String object to contain this information. |
38 | abstract int getTextLength() - Accessor used with getTextCharacters(), to know length of String stored in returned buffer. |
39 | abstract int getTextOffset() - Accessor used with getTextCharacters(), to know offset of the first text content character within buffer. |
40 | abstract JsonLocation getTokenLocation() - Method that return the starting location of the current token; that is, position of the first character from input that starts the current token. |
41 | Object getTypeId() - Method that can be called to check whether current token (one that was just read) has an associated type id, and if so, return it. |
42 | boolean getValueAsBoolean() - Method that will try to convert value of current token to a boolean. |
43 | boolean getValueAsBoolean(boolean defaultValue) - Method that will try to convert value of current token to a boolean. |
44 | double getValueAsDouble() - Method that will try to convert value of current token to a Java double. |
45 | double getValueAsDouble(double defaultValue) - Method that will try to convert value of current token to a Java double. |
46 | int getValueAsInt() - Method that will try to convert value of current token to a int. |
47 | int getValueAsInt(int defaultValue) - Method that will try to convert value of current token to a int. |
48 | long getValueAsLong() - Method that will try to convert value of current token to a long. |
49 | long getValueAsLong(long defaultValue) - Method that will try to convert value of current token to a long. |
50 | String getValueAsString() - Method that will try to convert value of current token to a String. |
51 | abstract String getValueAsString(String defaultValue) - Method that will try to convert value of current token to a String. |
52 | abstract boolean hasCurrentToken() - Method for checking whether parser currently points to a token (and data for that token is available). |
53 | abstract boolean hasTextCharacters() - Method that can be used to determine whether calpng of getTextCharacters() would be the most efficient way to access textual content for the event parser currently points to. |
54 | abstract boolean isClosed() - Method that can be called to determine whether this parser is closed or not. |
55 | boolean isEnabled(JsonParser.Feature f) - Method for checking whether specified JsonParser.Feature is enabled. |
56 | boolean isExpectedStartArrayToken() - Speciapzed accessor that can be used to verify that the current token indicates start array (usually meaning that current token is JsonToken.START_ARRAY) when start array is expected. |
57 | Boolean nextBooleanValue() - Method that fetches next token (as if calpng nextToken()) and if it is JsonToken.VALUE_TRUE or JsonToken.VALUE_FALSE returns matching Boolean value; otherwise return null. |
58 | boolean nextFieldName(SeriapzableString str) - Method that fetches next token (as if calpng nextToken()) and verifies whether it is JsonToken.FIELD_NAME with specified name and returns result of that comparison. |
59 | int nextIntValue(int defaultValue) - Method that fetches next token (as if calpng nextToken()) and if it is JsonToken.VALUE_NUMBER_INT returns 32-bit int value; otherwise returns specified default value It is functionally equivalent to: |
60 | long nextLongValue(long defaultValue) - Method that fetches next token (as if calpng nextToken()) and if it is JsonToken.VALUE_NUMBER_INT returns 64-bit long value; otherwise returns specified default value It is functionally equivalent to: |
61 | String nextTextValue() - Method that fetches next token (as if calpng nextToken()) and if it is JsonToken.VALUE_STRING returns contained String value; otherwise returns null. |
62 | abstract JsonToken nextToken() - Main iteration method, which will advance stream enough to determine type of the next token, if any. |
63 | abstract JsonToken nextValue() - Iteration method that will advance stream enough to determine type of the next token that is a value type (including JSON Array and Object start/end markers). |
64 | abstract void overrideCurrentName(String name) - Method that can be used to change what is considered to be the current (field) name. |
65 | int readBinaryValue(Base64Variant b64variant, OutputStream out) - Similar to readBinaryValue(OutputStream) but allows exppcitly specifying base64 variant to use. |
66 | int readBinaryValue(OutputStream out) - Method that can be used as an alternative to getBigIntegerValue(), especially when value can be large. |
67 | <T> T readValueAs(Class<T> valueType) - Method to deseriapze JSON content into a non-container type (it can be an array type, however): typically a bean, array or a wrapper type (pke Boolean). |
68 | <T> T readValueAs(TypeReference<?> valueTypeRef)- Method to deseriapze JSON content into a Java type, reference to which is passed as argument. |
69 | <T extends TreeNode> T readValueAsTree() - Method to deseriapze JSON content into equivalent "tree model", represented by root TreeNode of resulting model. |
70 | <T> Iterator<T> readValuesAs(Class<T> valueType) - Method for reading sequence of Objects from parser stream, all with same specified value type. |
71 | <T> Iterator<T> readValuesAs(TypeReference<?> valueTypeRef)- Method for reading sequence of Objects from parser stream, all with same specified value type. |
72 | int releaseBuffered(OutputStream out) - Method that can be called to push back any content that has been read but not consumed by the parser. |
73 | int releaseBuffered(Writer w) - Method that can be called to push back any content that has been read but not consumed by the parser. |
74 | boolean requiresCustomCodec() - Method that can be called to determine if a custom ObjectCodec is needed for binding data parsed using JsonParser constructed by this factory (which typically also imppes the same for seriapzation with JsonGenerator). |
75 | abstract void setCodec(ObjectCodec c) - Setter that allows defining ObjectCodec associated with this parser, if any. |
76 | JsonParser setFeatureMask(int mask) - Bulk set method for (re)settting states of all standard JsonParser.Features |
77 | void setSchema(FormatSchema schema) - Method to call to make this parser use specified schema. |
78 | abstract JsonParser skipChildren() - Method that will skip all child tokens of an array or object token that the parser currently points to, iff stream points to JsonToken.START_OBJECT or JsonToken.START_ARRAY. |
79 | abstract Version version() - Accessor for getting version of the core package, given a parser instance. |
Methods inherited
This class inherits methods from the following classes:
java.lang.Object