jodd-json/src/main/java/jodd/json/BeanSerializer.java
@Override
	protected final void onSerializableProperty(String propertyName, final PropertyDescriptor propertyDescriptor) {
		final Object value;

		if (propertyDescriptor == null) {
			// metadata - classname
			value = source.getClass().getName();
		} else {
			value = readProperty(source, propertyDescriptor);

			if ((value == null) && jsonContext.isExcludeNulls()) {
				return;
			}

			// change name for properties

			propertyName = typeData.resolveJsonName(propertyName);
		}

		onSerializableProperty(
				propertyName,
				propertyDescriptor == null ? null : propertyDescriptor.getType(),
				value);
	}
@Override
	protected final void onSerializableProperty(String propertyName, final PropertyDescriptor propertyDescriptor) {
		final Object value;

		if (propertyDescriptor == null) {
			// metadata - classname
			value = source.getClass().getName();
		} else {
			value = readProperty(source, propertyDescriptor);

			if ((value == null) && jsonContext.isExcludeNulls()) {
				return;
			}

			// change name for properties

			propertyName = typeData.resolveJsonName(propertyName);
		}

		onSerializableProperty(
				propertyName,
				propertyDescriptor == null ? null : propertyDescriptor.getType(),
				value);
	}
@ Override protected final void onSerializableProperty ( String propertyName , final PropertyDescriptor propertyDescriptor ) { final Object value ; if ( propertyDescriptor == null ) { // metadata - classname value = source . getClass ( ) . getName ( ) ; } else { value = readProperty ( source , propertyDescriptor ) ; if ( ( value == null ) && jsonContext . isExcludeNulls ( ) ) { return ; } // change name for properties propertyName = typeData . resolveJsonName ( propertyName ) ; } onSerializableProperty ( propertyName , propertyDescriptor == null ? null : propertyDescriptor . getType ( ) , value ) ; }
Reads property value and {@link #onSerializableProperty(String, Class, Object) serializes it}.
Reads property value and {