mysql中json_array和json_object的使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql中json_array和json_object的使用相关的知识,希望对你有一定的参考价值。

参考技术A

普通的json数组。

由于json中的所有引号必须使用双引号,但又不能双引号里包含双引号,所以上面的第一个例子都必须使用\\转义。 第三个元素是一个字符串 ,需要对原数组json_decode之后在对第三个元素json_decode。

json数组里嵌入json对象

普通的json对象

乍一看像是Json对象里包了一个json数组,仔细看其实第三个元素是一个字符串,这个整体还是一个json对象。

json对象套json数组

Symfony 2 - 无法插入 json_array 类型变量

【中文标题】Symfony 2 - 无法插入 json_array 类型变量【英文标题】:Symfony 2 - could not able to insert json_array type variable 【发布时间】:2018-07-15 00:08:11 【问题描述】:

json_array 类型变量无法包含到数据库中。填充的异常如下

(Symfony\Component\Debug\Exception\ContextErrorException(code: 0): Warning: implode(): Invalid arguments passed at /var/www/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/SimpleArrayType.php:51)"

我的实体类有这部分 json_array 类型参数。

/**
*
* @ORM\Column(name="street", type="json_array")
*/
private $street;

我还使用实体管理器将其包含到数据库中。

$entityName->setStreet(
           array(
              'street_1' => $queueItem->street_1,
              'street_2' => $queueItem->street_2));

if($this->em->getUnitOfWork()->getEntityState($entityName)) 
               $this->em->flush();

【问题讨论】:

您是否尝试将您传递给setStreet的数组转储? 我的 var_dump 是 array(2) 'street_1' => string(38) "address line 1" 'street_2' => string(10) "Office 101" 【参考方案1】:

我认为您应该在多条街道上使用type="text" 或自己的实体

http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/types.html#text

因为:

    type="json_array" 已弃用 type="json" http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/types.html#json-array 这种类型需要一个可以编码的字符串,而不是一个数组

【讨论】:

以上是关于mysql中json_array和json_object的使用的主要内容,如果未能解决你的问题,请参考以下文章

mysql中的json数据类型

Symfony 2 - 无法插入 json_array 类型变量

JSON_ARRAY 未在 MariaDB 上发送空列表

教义数组 vs simple_array vs json_array

如何绕过错误“无效类型“ json_array””]

mysql json的使用