Skip to main content

serializeNative

Native JSON serialization with standard JavaScript behavior. Direct alias for the native JSON.stringify method, providing consistent serialization behavior across the application. Handles undefined values by omitting them from the serialized output and supports all standard JSON.stringify options including custom replacer functions and formatting.

Signature

const serializeNative: {
(value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string;
(value: any, replacer?: (number | string)[] | null, space?: string | number): string;
}

Parameters

NameTypeDescription
value-Any serializable value to convert to JSON string
replacer-Function to transform values during serialization or array of property names to include (optional)
space-String for formatting or number of spaces for indentation (optional)

Returns

JSON string representation of the value

Examples

Basic serialization

import { serializeNative } from '@winglet/common-utils';

// Simple object serialization
const user = { id: 1, name: 'John', active: true };
console.log(serializeNative(user)); // '{"id":1,"name":"John","active":true}'

// Array serialization
const numbers = [1, 2, 3, 4, 5];
console.log(serializeNative(numbers)); // '[1,2,3,4,5]'

// Primitive values
console.log(serializeNative('hello')); // '"hello"'
console.log(serializeNative(42)); // '42'
console.log(serializeNative(null)); // 'null'

Undefined value handling

// undefined properties are omitted
const data = { a: 1, b: undefined, c: 'hello' };
console.log(serializeNative(data)); // '{"a":1,"c":"hello"}'

// undefined array elements become null
const array = [1, undefined, 3];
console.log(serializeNative(array)); // '[1,null,3]'

// Direct undefined serialization
console.log(serializeNative(undefined)); // undefined (not a string)

Pretty printing with formatting

const data = { user: { name: 'Alice', age: 30 }, items: [1, 2, 3] };

// Compact (default)
console.log(serializeNative(data));
// '{"user":{"name":"Alice","age":30},"items":[1,2,3]}'

// Pretty printed with 2 spaces
console.log(serializeNative(data, null, 2));
// {
// "user": {
// "name": "Alice",
// "age": 30
// },
// "items": [1, 2, 3]
// }

// Custom indentation string
console.log(serializeNative(data, null, '\t')); // Tab-indented

Using replacer function for custom serialization

const sensitiveData = {
username: 'john_doe',
password: 'secret123',
email: 'john@example.com',
apiKey: 'sk-abc123'
};

// Hide sensitive fields
const safeReplacer = (key: string, value: any) => {
const sensitiveFields = ['password', 'apiKey'];
return sensitiveFields.includes(key) ? '[REDACTED]' : value;
};

console.log(serializeNative(sensitiveData, safeReplacer));
// '{"username":"john_doe","password":"[REDACTED]","email":"john@example.com","apiKey":"[REDACTED]"}'

Property filtering with replacer array

const fullData = {
id: 123,
name: 'Product',
price: 29.99,
internalCode: 'ABC-123',
debugInfo: { logs: [], errors: [] }
};

// Only serialize specific properties
const publicFields = ['id', 'name', 'price'];
console.log(serializeNative(fullData, publicFields));
// '{"id":123,"name":"Product","price":29.99}'

Playground

import { serializeNative } from '@winglet/common-utils';

// Simple object serialization
const user = { id: 1, name: 'John', active: true };
console.log(serializeNative(user)); // '{"id":1,"name":"John","active":true}'

// Array serialization
const numbers = [1, 2, 3, 4, 5];
console.log(serializeNative(numbers)); // '[1,2,3,4,5]'

// Primitive values
console.log(serializeNative('hello')); // '"hello"'
console.log(serializeNative(42)); // '42'
console.log(serializeNative(null)); // 'null'

Notes

Standard JSON Behavior:

  • Functions, undefined, and symbols are omitted from objects
  • undefined array elements become null
  • Date objects are serialized as ISO strings
  • RegExp objects become empty objects
  • Circular references throw TypeError

Use Cases:

  • API response serialization
  • Configuration file generation
  • Debug logging and data inspection
  • Data persistence and storage
  • Inter-service communication