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的使用的主要内容,如果未能解决你的问题,请参考以下文章
Symfony 2 - 无法插入 json_array 类型变量