从json数据中提取需要的部分 组成新的键值对

从json数据中提取需要的部分 组成新的键值对,第1张

先把你的这个JSON解析成一个对象,假如说是oldObj吧

然后新建一个newObj

for(var i = 0; i < oldObjlength; i++){

    newObj[i] = new Object();

    newObj[i]AreaId = oldObj[i]AreaId;

    newObj[i]AreaName = oldObj[i]AreaName;

}

最后把这个newObject解析成JSON就可以了

var str = "[{},{},{}]";

var arr = eval("("+str+")");

for(var i=0;i<arrlength;i++){

var obj= arr[i];

}

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 dwt_etl_log(sp_name, title, description)

#values('dwfn_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 OR in_Index IS NULL THEN

SET vs_return = NULL;

ELSE

#去掉方括号

SET vs_JsonArray = REPLACE(REPLACE(vs_JsonArray, '[', ''), ']', '');

#取指定的JSON对象

SET vs_json = SUBSTRING_INDEX(SUBSTRING_INDEX(vs_JsonArray,'}', in_index),'}',-1);

IF vs_json = '' OR vs_json IS NULL THEN

SET vs_return = NULL;

ELSE

SET vs_KeyName = CONCAT('"', vs_KeyName, '":');

SET vi_pos1 = INSTR(vs_json, vs_KeyName);

IF vi_pos1 > 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一般是用来传递web页面和后台的一种数据容器

1,、后台开发接收前台传过来的json字符串,java有个开发包netsfjsonJSONObject(百度下就有下载地址),调用里面的JSONObject a = new JSONObject(String JsonString)。就可以自动解析JSON字符串数据,得到一个JSONObject对象a,然后a有有个get(String name)的方法,就可以得到a对象里面的具体数据(由键值name获取对应的数据,像map一样)

2、前台页面接收后台传来的JSON对象主要是通过Javascript来解析,有开放JS文件jsonjs(同样百度下就很容易找到下载地址),有了这个文件就可以解析后台传入的JSON对象了,具体方法:有个JSONparse(JsonStr)的方法,JsonStr就是后台传入的JSON对象字符串。用此方法得到一个JsonObj后,就可以用Js *** 作数组的规则对此对象读取数据,常用的有JsonObjlengh来遍历整个JsonObj。

3、前台将一个JSON对象传到后台可以用2里面提及的开发包中的JSONstringify(JsonObj)将一个JsonObj对象变成字符串传到后台,然后通过1里面的方法获取该对象里面的内容。处理完毕后传到前台用2里面的方法进行解析

<!DOCTYPE HTML>

<html>

<head>

<meta charset=UTF-8>

<title>recursion</title>

<style type="text/css">

</style>

<script type="text/javascript">

var _try_data = 

{

    "message_list": [

        {

            "viewer_list": [],

            "msg_type": " ",

            "story_id": "v1_10010_52_1_54a1",

        }, 

        {

            "viewer_list": [],

            "msg_type": " ",

            "story_id": "v1_10010_52_1_54a7",

        }, 

        {

            "viewer_list": [],

            "msg_type": " ",

            "story_id": "v1_10010_52_1_54a5",

        }

    ]

};

var try_bc_param = 

{

    "bc_list": [

        {

            "start_moment": 3,

            "story_id": "v1_10010_52_1_54a1",

            "caption": "我不知道你是谁1。",

            "duration": 4

        }, 

        {

            "start_moment": 3,

            "story_id": "v1_10010_52_1_54a5",

            "caption": "我不知道你是谁2。",

            "duration": 4

        }, 

        {

            "start_moment": 09,

            "story_id": "v1_10010_52_1_54a1",

            "caption": "我不知道你是谁3。",

            "duration": 4

        }

    ]

};

var filterData = function(a, b) 

{

    var array = [];

    for (var i = 0; i < alength; i++) 

    {

        var x = a[i]["story_id"];

        for (var j = 0; j < blength; j++) 

        {

            var bj = b[j];

            if (x == bj["story_id"]) 

            {

                var obj = 

                {

                    "start_moment": bj["start_moment"],

                    "caption": bj["caption"]

                };

                arraypush(obj);

            }

        }

    }

    arraysort(function(c, d) 

    {

        var x = parseFloat(c['start_moment'], 10), y = parseFloat(d["start_moment"], 10);

        if (x < y) 

        {

            return -1;

        } 

        else if (x > y) 

        {

            return 1;

        } 

        else 

        {

            return 0;

        }

    });

    return array;

}

var displayDiv = function(array) 

{

    for (var i = 0; i < arraylength; i++) 

    {

        var div = documentcreateElement('div');

        divinnerHTML = array[i]['caption'];

        documentbodyappendChild(div);

    }

}

onload = function() 

{

    var _try_messages = _try_data['message_list'];

    var dm = try_bc_param["bc_list"];

    var array = filterData(_try_messages, dm);

    displayDiv(array);

}

</script>

</head>

<body>

</body>

</html>

angularjs读取json中的某个字段的方法是利用json的api实现的。

思路:先把js字符串转化成json结构,然后利用取属性运算符获取各个属性。

1、例如有以下json数据:

var data = {

"resultList": [

"{\"lookupKey\":2,\"clientKey\":1,\"codeName\":\"ApplicationAppType\",\"codeValue\":\"ApplicationType2\",\"codeDesc\":\"##\",\"updatedBy\":null,\"internalCodeName\":\"ApplicationAppType\"}",

"{\"lookupKey\":3,\"clientKey\":1,\"codeName\":\"ApplicationClass\",\"codeValue\":\"Tier 1\",\"codeDesc\":\"Critical Application requiring immediate response in case of a disruption of Service\",\"updatedBy\":null,\"internalCodeName\":\"ApplicationClass\"}"

]

};

2、利用angularfromJson解析代码如下:

$scoperesult = [

angularfromJson(dataresultList[0]),

angularfromJson(dataresultList[1])

];

alert($scoperesult[0]codeName);

结果是:ApplicationClass

3、这样就获取到了json字符串中的codeName的值。

以上就是关于从json数据中提取需要的部分 组成新的键值对全部的内容,包括:从json数据中提取需要的部分 组成新的键值对、JS中一个字符串如“[{},{},{}]”所示,大括号中是JSON键值对,请问 这个字符串中的数组如何提取出来呢,、如何在java中获取mysql5.7版本里的json-CSDN论坛等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://www.54852.com/web/9583035.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存