# json2php

> JSON to PHP converter

Latest version **0.0.12** (published 2024-12-09) · BSD license · 0 weekly downloads

## Install

```sh
npm install json2php
pnpm add json2php
yarn add json2php
bun add json2php
```

## Health

**Score 40/100 (D)** — status: maintenance-mode.

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads; pre 1.0.

Negative: stale; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.12 |
| Published | 2024-12-09 |
| First published | 2012-12-14 |
| Weekly downloads | 0 |
| License | BSD |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Unpacked size | 6.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 8 |
| Author | Daniel Zahariev |
| Maintainers | daniel-zahariev |
| Keywords | JSON, PHP, Converter |

## Links

- npm: https://www.npmjs.com/package/json2php
- Repository: https://github.com/daniel-zahariev/json2php
- Homepage: https://github.com/daniel-zahariev/json2php#readme
- Issues: https://github.com/daniel-zahariev/json2php/issues
- npm.io page: https://npm.io/package/json2php

## Alternatives

- [@mapbox/jsonlint-lines-primitives](https://npm.io/package/@mapbox/jsonlint-lines-primitives.md) — 5.3M weekly downloads
- [reftools](https://npm.io/package/reftools.md) — 3.5M weekly downloads
- [@hey-api/openapi-ts](https://npm.io/package/@hey-api/openapi-ts.md) — 3.5M weekly downloads
- [@mapbox/geojson-rewind](https://npm.io/package/@mapbox/geojson-rewind.md) — 2.4M weekly downloads
- [turbo-stream](https://npm.io/package/turbo-stream.md) — 1.7M weekly downloads

## Recent versions

- 0.0.12 (latest) — 2024-12-09
- 0.0.11 — 2024-12-07
- 0.0.10 — 2024-12-07
- 0.0.9 — 2024-04-11
- 0.0.8 — 2024-04-09
- 0.0.7 — 2022-12-10
- 0.0.6 — 2022-11-22
- 0.0.5 — 2021-12-07
- 0.0.4 — 2013-11-29
- 0.0.3-r — 2012-12-14
- 0.0.3 — 2012-12-14
- 0.0.2 — 2012-12-14
- 0.0.1 — 2012-12-14

## README

json2php
========

### Installation

To install json2php you could clone the project from GitHub or use NPM to install it.

```bash
npm install json2php
```

### Usage

Convert JavaScript object/array/string/number/bigint/boolean/Date to string that is the corresponding PHP representation.

#### String

When the content is just a string the output will be the same string.

```javascript
s = json2php('Hello World!')
// => s = 'Hello World!'
```

#### Number & BigInt

Number and BigInt types are the same.

```javascript
s = json2php(123)
// => s = '123'
b = json2php(BigInt(123))
// => b = '123'
```

#### Boolean

```javascript
s = json2php( true )
// => s = 'true'
```

#### Undefined/Null

`null` and `undefined` are returned as `null`

```javascript
s = json2php(undefined)
// => s = 'null'
```

#### Symbol/Function

`Symbol` and `Function` are returned as `null`

```javascript
s = json2php(Symbol(test))
// => s = 'null'
f = json2php(function greet(name) { return `Hello, ${name}!`; })
// => f = 'null'
```

#### Date

Dates are formatted to string using `toISOString` method

```javascript
s = json2php(new Date('2020-06-19 18:20:34')))
// => s = '2020-06-19T15:20:34.000Z'
```

#### Array

```javascript
s = json2php([1, 2, 3])
// => s = 'array(1, 2, 3)'
```

#### Object

```javascript
s = json2php({a: 1, b: 2, c: 'text', false: true, undefined: null})
// => s = "array('a' => 1, 'b' => 2, 'c' => 'text', 'false': true, 'undefined': null)"
```

#### Non-valid JSON

```javascript
s = json2php(new Date())
// => s = "null"
```

### Pretty printing
Create custom 'printers' with `json2php.make`: 

```javascript
const printer = json2php.make({linebreak:'\n', indent:'\t', shortArraySyntax: true})
printer({one: 3, two: 20, three: [9, 3, 2]})

/* result:
[
	'one' => 3, 
	'two' => 20, 
	'set' => [
		9, 
		3, 
		2
	]
]
*/
```

### Compressing the output
To compress the output (e.g. to make the resulting PHP as small as possible), use `shortArraySyntax` with `stripSpaces`:

```javascript
const printer = json2php.make({shortArraySyntax: true, stripSpaces: true})
printer({
  arr: [1, 2, 3, 4, 5, {foo: 'surprise!'}],
  obj: {
    arr: [{foo: 'bar', bar: 'baz', arr2: [1, 2]}]
  }
})

// result:
// ['arr'=>[1,2,3,4,5,['foo'=>'surprise!']],'obj'=>['arr'=>[['foo'=>'bar','bar'=>'baz','arr2'=>[1,2]]]],'test'=>'str']
```

### Changelog

#### 0.0.12
  * Up the release management & cleanup

#### 0.0.11
  * Add support for Date and BigInt types

#### 0.0.10
  * Rewrite to TypeScript

#### 0.0.9
  * Add `stripSpaces` to pretty print options (thanks to @noahtallen)

#### 0.0.7
  * Add `shortArraySyntax` to pretty print options

#### 0.0.6
  * Add pretty print capability via `json2php.make` (thanks to @stokesman)

#### 0.0.5
  * Update and clean up (thanks to @SumoTTo)
  * Add boolean type (thanks to @SumoTTo)

#### 0.0.4
  * Fix for single quotes escaping (thanks to @ksky521)

#### 0.0.3
  * Fixed the case when non-valid JSON is passed
  * Fixing the bug with the object section

#### 0.0.2
  * Adding the package.json to Git repository, also package dependency
  * Changes into the file structure
  * Adding CoffeeScript source ( Not finished yet )
  * Adding Cakefile and task `test`
  * Adding Mocha for test framework.
  * Adding `test`, `src`, `lib` directory
  * Adding tests

#### 0.0.1
  * Init the project into NPM
  * module.exports for Node.js
  * Added json2php into the global scope with global.json2php

---
_Source: https://npm.io/package/json2php · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
