stringify-object

Stringify an object/array like JSON.stringify just without all the double-quotes

BSD-2-Clause 29 个版本
安装
npm install stringify-object
yarn add stringify-object
pnpm add stringify-object
bun add stringify-object
README

stringify-object

Stringify an object/array like JSON.stringify just without all the double-quotes

Useful for when you want to get the string representation of an object in a formatted way.

It also handles circular references and lets you specify quote type.

Install

npm install stringify-object

Usage

import stringifyObject from 'stringify-object';

const object = {
	foo: 'bar',
	'arr': [1, 2, 3],
	nested: {
		hello: "world"
	}
};

const pretty = stringifyObject(object, {
	indent: '  ',
	singleQuotes: false
});

console.log(pretty);
/*
{
  foo: "bar",
  arr: [
    1,
    2,
    3
  ],
  nested: {
    hello: "world"
  }
}
*/

// Also works with Map and Set
const map = new Map([['key', 'value']]);
console.log(stringifyObject(map));
//=> new Map([
//=>   ['key', 'value']
//=> ])

API

stringifyObject(input, options?)

Circular references will be replaced with "[Circular]".

Object keys are only quoted when necessary, for example, {'foo-bar': true}.

input

Type: object | Array | Map | Set

options

Type: object

indent

Type: string
Default: \t

Preferred indentation.

singleQuotes

Type: boolean
Default: true

Set to false to get double-quoted strings.

filter(object, property)

Type: Function

Expected to return a boolean of whether to include the property property of the object object in the output.

transform(object, property, originalResult)

Type: Function
Default: undefined

Expected to return a string that transforms the string that resulted from stringifying object[property]. This can be used to detect special types of objects that need to be stringified in a particular way. The transform function might return an alternate string in this case, otherwise returning the originalResult.

Here's an example that uses the transform option to mask fields named "password":

import stringifyObject from 'stringify-object';

const object = {
	user: 'becky',
	password: 'secret'
};

const pretty = stringifyObject(object, {
	transform: (object, property, originalResult) => {
		if (property === 'password') {
			return originalResult.replace(/\w/g, '*');
		}

		return originalResult;
	}
});

console.log(pretty);
/*
{
	user: 'becky',
	password: '******'
}
*/
inlineCharacterLimit

Type: number

When set, will inline values up to inlineCharacterLimit length for the sake of more terse output.

For example, given the example at the top of the README:

import stringifyObject from 'stringify-object';

const object = {
	foo: 'bar',
	'arr': [1, 2, 3],
	nested: {
		hello: "world"
	}
};

const pretty = stringifyObject(object, {
	indent: '  ',
	singleQuotes: false,
	inlineCharacterLimit: 12
});

console.log(pretty);
/*
{
  foo: "bar",
  arr: [1, 2, 3],
  nested: {
    hello: "world"
  }
}
*/

As you can see, arr was printed as a one-liner because its string was shorter than 12 characters.

版本列表
6.0.0 2025-09-07
5.0.0 2023-01-16
4.0.1 2022-02-15
4.0.0 2021-08-22
3.3.0 2018-10-16
3.2.2 2018-02-05
3.2.1 2017-09-23
3.2.0 2017-03-15
3.1.0 2016-11-24
3.0.0 2016-11-08
2.4.0 2016-06-13
2.3.1 2015-11-07
2.3.0 2015-07-28
2.2.0 2015-07-07
2.1.0 2015-07-03
2.0.0 2015-05-08
1.0.1 2015-03-04
1.0.0 2014-08-14
0.2.1 2014-04-30
0.2.0 2014-01-29
0.1.8 2014-01-29
0.1.7 2013-09-19
0.1.6 2013-09-01
0.1.5 2013-08-19
0.1.4 2013-06-05
0.1.3 2013-04-06
0.1.2 2012-12-12
0.1.1 2012-12-11
0.1.0 2012-12-11