求救,mysql怎么解析json

求救,mysql怎么解析json,第1张

DELIMITER $$ USE `dw`$$ DROP FUNCTION IF EXISTS `fn_Json_getKeyValue`$$ CREATE DEFINER=`data`@`%` FUNCTION `fn_Json_getKeyValue`( in_JsonArray VARCHAR(4096),#JSON数组字符串 in_Index TINYINT, #JSON对象序号,序号从1开始 in_KeyName VARCHAR(64)#键名 ) RETURNS VARCHAR(512) CHARSET utf8 BEGIN DECLARE vs_return VARCHAR(4096) DECLARE vs_JsonArray, vs_Json, vs_KeyName VARCHAR(4096) #declare vs_Json varchar(4096) DECLARE vi_pos1, vi_pos2 SMALLINT UNSIGNED #写监控日志 #insert into dw.t_etl_log(sp_name, title, description) #values('dw.fn_Json_getKeyValue', '通过Json键名取键值', concat('in_JsonArray=', in_JsonArray)) SET vs_JsonArray = TRIM(in_JsonArray) SET vs_KeyName = TRIM(in_KeyName) IF vs_JsonArray = '' OR vs_JsonArray IS NULL OR vs_KeyName = '' OR vs_KeyName IS NULL OR in_Index 0 THEN #如果键名存在 SET vi_pos1 = vi_pos1 + CHAR_LENGTH(vs_KeyName) SET vi_pos2 = LOCATE(',', vs_json, vi_pos1) IF vi_pos2 = 0 THEN #最后一个元素没有','分隔符,也没有结束符'}' SET vi_pos2 = CHAR_LENGTH(vs_json) + 1 END IF SET vs_return = REPLACE(MID(vs_json, vi_pos1, vi_pos2 - vi_pos1), '"', '') END IF END IF END IF RETURN(vs_return) END$$ DELIMITER 测试: {"old_current_score":"2","new_current_score":"0","old_grade_id":"1","new_grade_id":"1","grade_time":"2016-04-09 00:43:26","grade_upgrade_time":"2017-04-09 00:43:26"} select fn_Json_getKeyValue(reason,1,'old_grade_id')

首先定义一个数组,然后遍历数据表,把相应的数据放到数组中,最后通过json_encode()转化数组

json_encode() 函数的功能是将数值转换成json数据存储格式。

例如:

<?php

//定义一个数组,用于保存读取到的数据

$array = array()

$query = mysql_query("select * from table")

//遍历数据表

while($rows = mysql_fetch_array($query)){

//可以直接把读取到的数据赋值给数组或者通过字段名的形式赋值也可以

$array[] = $rows

$array[$rows['id']] = $rows

}

print_r($array)

//最后通过json_encode()转化数组

echo json_encode($array)

?>


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/6105857.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-15
下一篇 2023-03-15

发表评论

登录后才能评论

评论列表(0条)

保存