void toJSONString ( final Map < ReferenceEqualityKey < JSONReference > , CharSequence > jsonReferenceToId , final boolean includeNullValuedFields , final int depth , final int indentWidth , final StringBuilder buf ) { final boolean prettyPrint = indentWidth > 0 ; final int n = items . size ( ) ; int numDisplayedFields ; if ( includeNullValuedFields ) { numDisplayedFields = n ; } else { numDisplayedFields = 0 ; for ( final Entry < String , Object > item : items ) { if ( item . getValue ( ) != null ) { numDisplayedFields ++ ; } } } if ( objectId == null && numDisplayedFields == 0 ) { buf . append ( "{}" ) ; } else { buf . append ( prettyPrint ? "{\n" : "{" ) ; if ( objectId != null ) { // id will be non-null if this object does not have an @Id field, but was referenced by // another object (need to include ID_TAG) if ( prettyPrint ) { JSONUtils . indent ( depth + 1 , indentWidth , buf ) ; } buf . append ( ' ' ) ; buf . append ( JSONUtils . ID_KEY ) ; buf . append ( prettyPrint ? "\": " : "\":" ) ; JSONSerializer . jsonValToJSONString ( objectId , jsonReferenceToId , includeNullValuedFields , depth + 1 , indentWidth , buf ) ; if ( numDisplayedFields > 0 ) { buf . append ( ' ' ) ; } if ( prettyPrint ) { buf . append ( ' ' ) ; } } for ( int i = 0 , j = 0 ; i < n ; i ++ ) { final Entry < String , Object > item = items . get ( i ) ; final Object val = item . getValue ( ) ; if ( val != null || includeNullValuedFields ) { final String key = item . getKey ( ) ; if ( key == null ) { // Keys must be quoted, so the unquoted null value cannot be a key // (Should not happen -- JSONParser.parseJSONObject checks for null keys) throw new IllegalArgumentException ( "Cannot serialize JSON object with null key" ) ; } if ( prettyPrint ) { JSONUtils . indent ( depth + 1 , indentWidth , buf ) ; } buf . append ( ' ' ) ; JSONUtils . escapeJSONString ( key , buf ) ; buf . append ( prettyPrint ? "\": " : "\":" ) ; JSONSerializer . jsonValToJSONString ( val , jsonReferenceToId , includeNullValuedFields , depth + 1 , indentWidth , buf ) ; if ( ++ j < numDisplayedFields ) { buf . append ( ' ' ) ; } if ( prettyPrint ) { buf . append ( ' ' ) ; } } } if ( prettyPrint ) { JSONUtils . indent ( depth , indentWidth , buf ) ; } buf . append ( ' ' ) ; } }
Serialize this JSONObject to a string .