Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (101)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (309)
Collections:
Other Resources:
Jackson Data Binding Source Code
Jackson is "the Java JSON library" or "the best JSON parser for Java". Or simply as "JSON for Java".
Jackson Databind Source Code files are provided in the source packge (jackson-databind-2.14.0-sources.jar). You can download it at Jackson Maven Website.
You can also browse Jackson Databind Source Code below:
✍: FYIcenter.com
⏎ com/fasterxml/jackson/databind/node/InternalNodeMapper.java
package com.fasterxml.jackson.databind.node; import java.io.IOException; import java.util.Arrays; import java.util.Iterator; import java.util.Map; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.*; import com.fasterxml.jackson.databind.json.JsonMapper; import com.fasterxml.jackson.databind.jsontype.TypeSerializer; /** * Helper class used to implement {@code toString()} method for * {@link BaseJsonNode}, by embedding a private instance of * {@link JsonMapper}, only to be used for node serialization. * * @since 2.10 (but not to be included in 3.0) */ final class InternalNodeMapper { private final static JsonMapper JSON_MAPPER = new JsonMapper(); private final static ObjectWriter STD_WRITER = JSON_MAPPER.writer(); private final static ObjectWriter PRETTY_WRITER = JSON_MAPPER.writer() .withDefaultPrettyPrinter(); private final static ObjectReader NODE_READER = JSON_MAPPER.readerFor(JsonNode.class); // // // Methods for `JsonNode.toString()` and `JsonNode.toPrettyString()` public static String nodeToString(BaseJsonNode n) { try { return STD_WRITER.writeValueAsString(_wrapper(n)); } catch (IOException e) { // should never occur throw new RuntimeException(e); } } public static String nodeToPrettyString(BaseJsonNode n) { try { return PRETTY_WRITER.writeValueAsString(_wrapper(n)); } catch (IOException e) { // should never occur throw new RuntimeException(e); } } // // // Methods for JDK serialization support of JsonNodes public static byte[] valueToBytes(Object value) throws IOException { return JSON_MAPPER.writeValueAsBytes(value); } public static JsonNode bytesToNode(byte[] json) throws IOException { return NODE_READER.readValue(json); } private static JsonSerializable _wrapper(BaseJsonNode root) { return new WrapperForSerializer(root); } /** * Intermediate serializer we need to implement non-recursive serialization of * {@link BaseJsonNode}. *<p> * NOTE: not designed as thread-safe; instances must NOT be shared or reused. * * @since 2.14 */ protected static class WrapperForSerializer extends JsonSerializable.Base { protected final BaseJsonNode _root; // Non-final as passed when `serialize()` is called protected SerializerProvider _context; public WrapperForSerializer(BaseJsonNode root) { _root = root; } @Override public void serialize(JsonGenerator g, SerializerProvider ctxt) throws IOException { _context = ctxt; _serializeNonRecursive(g, _root); } @Override public void serializeWithType(JsonGenerator g, SerializerProvider ctxt, TypeSerializer typeSer) throws IOException { // Should not really be called given usage, so serialize(g, ctxt); } protected void _serializeNonRecursive(JsonGenerator g, JsonNode node) throws IOException { if (node instanceof ObjectNode) { g.writeStartObject(this, node.size()); _serializeNonRecursive(g, new IteratorStack(), node.fields()); } else if (node instanceof ArrayNode) { g.writeStartArray(this, node.size()); _serializeNonRecursive(g, new IteratorStack(), node.elements()); } else { node.serialize(g, _context); } } protected void _serializeNonRecursive(JsonGenerator g, IteratorStack stack, final Iterator<?> rootIterator) throws IOException { Iterator<?> currIt = rootIterator; while (true) { // First: any more elements from the current iterator? while (currIt.hasNext()) { JsonNode value; // Otherwise we do have another Map or Array element to handle Object elem = currIt.next(); if (elem instanceof Map.Entry<?,?>) { @SuppressWarnings("unchecked") Map.Entry<String, JsonNode> en = (Map.Entry<String, JsonNode>) elem; g.writeFieldName(en.getKey()); value = en.getValue(); } else { value = (JsonNode) elem; } if (value instanceof ObjectNode) { stack.push(currIt); currIt = value.fields(); g.writeStartObject(value, value.size()); } else if (value instanceof ArrayNode) { stack.push(currIt); currIt = value.elements(); g.writeStartArray(value, value.size()); } else { value.serialize(g, _context); } } if (g.getOutputContext().inArray()) { g.writeEndArray(); } else { g.writeEndObject(); } currIt = stack.popOrNull(); if (currIt == null) { return; } } } } /** * Optimized variant similar in functionality to (a subset of) * {@link java.util.ArrayDeque}; used to hold enclosing Array/Object * nodes during recursion-as-iteration. */ final static class IteratorStack { private Iterator<?>[] _stack; private int _top, _end; public IteratorStack() { } public void push(Iterator<?> it) { if (_top < _end) { _stack[_top++] = it; // lgtm [java/dereferenced-value-may-be-null] return; } if (_stack == null) { _end = 10; _stack = new Iterator<?>[_end]; } else { // grow by 50%, for most part _end += Math.min(4000, Math.max(20, _end>>1)); _stack = Arrays.copyOf(_stack, _end); } _stack[_top++] = it; } public Iterator<?> popOrNull() { if (_top == 0) { return null; } // note: could clean up stack but due to usage pattern, should not make // much difference since the whole stack is discarded after serialization done return _stack[--_top]; } } }
⏎ com/fasterxml/jackson/databind/node/InternalNodeMapper.java
Or download all of them as a single archive file:
File name: jackson-databind-2.14.0-sources.jar File size: 1187952 bytes Release date: 2022-11-05 Download
⇒ Jackson Annotations Source Code
⇐ Download and Install Jackson Binary Package
2022-03-29, 109223👍, 0💬
Popular Posts:
What Is poi-scratchpad-3.5.jar? poi-scratchpad-3.5.jar is one of the JAR files for Apache POI 3.5, w...
maven-settings-builder-3 .8.6.jaris the JAR file for Apache Maven 3.8.6 Settings Builder module. Apa...
JasperReports, the world's most popular open source business intelligence and reporting engine and J...
Where Can I see Java Source Code files for Xerces Java 2.11.2? Here are Java Source Code files for X...
What Is poi-ooxml-5.2.3.jar? poi-ooxml-5.2.3.jar is one of the JAR files for Apache POI 5.2.3, which...