postgres后台传String类型的JSON字符串前端解析到VM里面

目前情况:后台传入json的String字符串,需要解析出里面每个字段并作为VM属性,json如下:

[{
	"wx_account_def": "{\"wx_back_url\":\"http://www.weixin.qq.com/wxpay/pay.phpAA\",\"wx_app_id\":\"8866\",\"wx_mch_id\":\"12355\",\"wx_api_key\":\"12345\",\"wx_cert_path\":\"/certPath/wx/0/apiclient_cert.p12AA\"}",
	"shop_id": 1,
	"org_id": "1",
	"id": 1
},
{
	"wx_account_def": "{\"wx_back_url\":\"http://www.weixin.qq.com/wxpay/pay.phpAA\",\"wx_app_id\":\"8866\",\"wx_mch_id\":\"12355\",\"wx_api_key\":\"12345\",\"wx_cert_path\":\"/certPath/wx/0/apiclient_cert.p12AA\"}",
	"shop_id": 2,
	"org_id": "2",
	"id": 2
}]

    其实这里面每个店面的初始化微信的一些信息是不一样的,而且后台存String不存JSON形式是方便数据库变换,而这里的String的josn里面每个字段对应前端一个组件来显示,就需要把他解析出来并绑定组件,比如span或者input等。

    下面贴代码解析和聚合,大概意思就这样子,可以参考:

后台传前端解析:

VM={
init_fields: ['wx_account_def','ali_account_def','union_pay_account_def','parms'],
其他参数:其他参数}
   

 // TODO 云端返回添加数据给VM,分发给字段显示
    function InitParams(data){
        if(""==data || undefined== data||null==data || data.length<=0){
            return data;
        }
        for(var i=0;i<VM.init_fields.length;i++){
            data = InitAddParm(data,VM.init_fields[i]);
        }
        return data;
    }

    //TODO 云端返回添加数据给VM wx_account_def,ali_account_def,union_pay_account_def参数英文 parms参数中文
    function InitAddParm(data,parmName){
        for(var i=0;i<data.length;i++){
            if(""==data[i][parmName] || undefined== data[i][parmName]||null==data[i][parmName]){
                continue;
            }
            var parmStr = JSON.parse(data[i][parmName]);
            var arrayStr = [];
            for(var key in parmStr){
                data[i][key]=parmStr[key].toString();
                //key存起来当数组方便返回变json
                arrayStr.push(key)
            }
            data[i][parmName]=arrayStr;
        }

        return data;
    }

数据保存的时候需要聚合参数:

    // TODO VM一些字段数据集合在一起,返回给云端
    function TogetherParams(data) {
        if(""==data || undefined== data||null==data || data.length<=0){
            return data;
        }
        for(var i=0;i<VM.init_fields.length;i++){
            data = AddTogetherParms(data,VM.init_fields[i]);
        }
        return data;

    }

    function AddTogetherParms(data,parmName){
        if(""==data[parmName] || undefined== data[parmName]||null==data[parmName]){
            return data;
        }
        //之前key存起来当数组了,现在重新分配并变json形式存数据返回给后台
        var arrs = data[parmName].split(',')
        var jsonObj = {};
        for(var i=0;i<arrs.length;i++){
            var arrKey = arrs[i];
            var arrValue = data[arrKey];
            jsonObj[arrKey]=arrValue;
        }
        data[parmName]=jsonObj;
        return data;
    }

结论:大概意思就是后台传前端过来数据先解析并存key,前端传后台先根据Key存成Json形式数据并请求后台,这样子后台服务器又少一点工作量了,只要校验是不是json,是否有这些字段就可以了,不用再拼接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值