<?php declare(strict_types=1); /** * Copyright OpenSearch Contributors * SPDX-License-Identifier: Apache-2.0 * * Elasticsearch PHP client * * @link https://github.com/elastic/elasticsearch-php/ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co) * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0 * @license https://www.gnu.org/licenses/lgpl-2.1.html GNU Lesser General Public License, Version 2.1 * * Licensed to Elasticsearch B.V under one or more agreements. * Elasticsearch B.V licenses this file to you under the Apache 2.0 License or * the GNU Lesser General Public License, Version 2.1, at your option. * See the LICENSE file in the project root for more information. */ namespace OpenSearch\Serializers; use OpenSearch\Common\Exceptions\RuntimeException; if (!defined('JSON_INVALID_UTF8_SUBSTITUTE')) { //PHP < 7.2 Define it as 0 so it does nothing define('JSON_INVALID_UTF8_SUBSTITUTE', 0); } class ArrayToJSONSerializer implements SerializerInterface { /** * {@inheritdoc} */ public function serialize($data): string { if (is_string($data) === true) { return $data; } else { $data = json_encode($data, JSON_PRESERVE_ZERO_FRACTION + JSON_INVALID_UTF8_SUBSTITUTE); if ($data === false) { throw new RuntimeException("Failed to JSON encode: ".json_last_error()); } if ($data === '[]') { return '{}'; } else { return $data; } } } /** * {@inheritdoc} */ public function deserialize(?string $data, array $headers) { return json_decode($data, true); } }