
com.jsoniter.output.CodegenImplArray Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jsoniter Show documentation
Show all versions of jsoniter Show documentation
jsoniter (json-iterator) is fast and flexible JSON parser available in Java and Go
package com.jsoniter.output;
import java.lang.reflect.Type;
import java.util.*;
class CodegenImplArray {
public static CodegenResult genArray(String cacheKey, Class clazz) {
Class compType = clazz.getComponentType();
if (compType.isArray()) {
throw new IllegalArgumentException("nested array not supported: " + clazz.getCanonicalName());
}
boolean isCollectionValueNullable = true;
if (cacheKey.endsWith("__value_not_nullable")) {
isCollectionValueNullable = false;
}
if (compType.isPrimitive()) {
isCollectionValueNullable = false;
}
CodegenResult ctx = new CodegenResult();
ctx.append("public static void encode_(java.lang.Object obj, com.jsoniter.output.JsonStream stream) throws java.io.IOException {");
ctx.append(String.format("%s[] arr = (%s[])obj;", compType.getCanonicalName(), compType.getCanonicalName()));
ctx.append("if (arr.length == 0) { return; }");
ctx.buffer('[');
ctx.append("int i = 0;");
ctx.append(String.format("%s e = arr[i++];", compType.getCanonicalName()));
if (isCollectionValueNullable) {
ctx.append("if (e == null) { stream.writeNull(); } else {");
CodegenImplNative.genWriteOp(ctx, "e", compType, true);
ctx.append("}");
} else {
CodegenImplNative.genWriteOp(ctx, "e", compType, false);
}
ctx.append("while (i < arr.length) {");
ctx.append("stream.write(',');");
ctx.append("e = arr[i++];");
if (isCollectionValueNullable) {
ctx.append("if (e == null) { stream.writeNull(); } else {");
CodegenImplNative.genWriteOp(ctx, "e", compType, true);
ctx.append("}");
} else {
CodegenImplNative.genWriteOp(ctx, "e", compType, false);
}
ctx.append("}");
ctx.buffer(']');
ctx.append("}");
return ctx;
}
public static CodegenResult genCollection(String cacheKey, Class clazz, Type[] typeArgs) {
Type compType = Object.class;
if (typeArgs.length == 0) {
// default to List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy