2

我想在 MYSQL 触发器中解析 JSON 格式

 {"multicast_id":67784038XXXXXX,"success":1,"failure":0,"canonical_ids":0,"results":
[{"message_id":"0:13XXXX280085815%XXXXXXXXX"}]}

实际上,我将其作为我的一个应用程序的响应并将其存储在一个表(tbl1)中,因此我要做的是在该表(tbl1)上创建一个触发器并解析上述响应并在另一个表中插入相应的条目( tbl2 )

需要在 MYSQL 触发器中解析上述 json 格式,以便我将分别获取所有参数。怎么做到呢?

4

2 回答 2

7

您可以安装common_schema。然后你应该能够做这样的事情:

select common_schema.extract_json_value(d.table1,'/multicast_id') as multicase_id,
common_schema.extract_json_value(d.table1,'/success') as success,
common_schema.extract_json_value(d.table1,'/failure') as failure,
common_schema.extract_json_value(d.table1,'/canonical_ids') as canonical_ids,
common_schema.extract_json_value(d.table1,'/results') as results,
common_schema.extract_json_value(d.table1,'/message_id') as message_id
from database d;
于 2013-06-15T07:56:36.170 回答
2

在应用程序的数据库模型中添加代码。PHP 有一个很好的内置函数来解析 JSON,而这不是 MySql 的工作。

无论如何,将原始 JSON 存储在表中是不好的,因为它违背了关系数据库的目的。除非您将 JSON 字符串视为原始字符串,并且不关心其在数据库级别的含义。显然情况并非如此。

因此,甚至不必费心存储 JSON 字符串。从 PHP 解析它并将数据直接存储到您的tbl2. 使用 PHP 从表中重建 JSON 字符串非常简单且几乎是即时的(与从数据库中检索数据所需的时间相比)。

于 2013-06-15T09:05:58.177 回答