artTemplate--使用artTemplate时,由于json对象属性有数字命名格式 导致调用报错 syntax error
2016-07-08 11:39
585 查看
案例
今天在使用artTemplate做开发时,遇到一个比较奇葩的问题,就是使用json对象去获取值得时候,报如下错误:Template Error <temp> function anonymous($data,$filename) {'use strict';var $utils=this,$helpers=$utils.$helpers,$escape=$utils.$escape,crediteaseReportData=$data.crediteaseReportData,$each=$utils.$each,riskItem=$data.riskItem,$index=$data.$index,loanRecord=$data.loanRecord,$out='';$out+='<div class="contentWrap splitHeader">\n <a href="#" class="buttonActive" data-toggle="back" style="float: right;margin-right: 20px;"><span><<返回</span></a>\n\n <h1>宜信致诚数据详情</h1>\n</div>\n\n\n<table >\n <tbody>\n <tr>\n <th style="border: 1px solid #ddd;background: #f5f5f5;padding: 8px;width: 111px;border-top: 1px solid #ddd;vertical-align: top;">致诚分</th>\n <td style="style="margin-bottom: 1px"">\n <table class="table table-bordered" style="margin-bottom: 0px">\n <tbody>\n <tr>\n <th style="border: 1px solid #ddd; vertical-align: top; border-top: 1px solid #ddd;display: table-cell;background: #f5f5f5;padding: 8px;">信用评分</th>\n <td style="border: 1px solid #ddd;padding: 8px; line-height: 1.42857143; vertical-align: top; border-top: 1px solid #ddd;width: 781px;">\n '; $out+=$escape(crediteaseReportData.creditScore.result.creditScore); $out+=' (分值范围300~850)</td>\n </tr>\n <tr>\n <th style="border: 1px solid #ddd; vertical-align: top; border-top: 1px solid #ddd;display: table-cell;background: #f5f5f5;padding: 8px;">违约概率</th>\n <td style="border: 1px solid #ddd;padding: 8px; line-height: 1.42857143; vertical-align: top; border-top: 1px solid #ddd;width: 781px;">\n '; $out+=$escape(crediteaseReportData.creditScore.result.rate); $out+='</td>\n </tr>\n\n </tbody>\n </table>\n </td>\n </tr>\n\n <tr>\n <th style="border: 1px solid #ddd;background: #f5f5f5;padding: 8px;width: 111px;border-top: 1px solid #ddd;vertical-align: top;">风险名单对比结果</th>\n <td style="margin-bottom: 1px">\n <table class="table table-bordered" style="margin-bottom: 0px">\n <tbody>\n <tr>\n <th style="border: 1px solid #ddd;background: #f5f5f5;width: 218px;padding: 8px;">命中项</th>\n <th style="border: 1px solid #ddd;background: #f5f5f5;width: 218px;padding: 8px;">命中内容</th>\n <th style="border: 1px solid #ddd;background: #f5f5f5;width: 218px;padding: 8px;">风险类别</th>\n <th style="border: 1px solid #ddd;background: #f5f5f5;width: 218px;padding: 8px;">风险发生时间(最近)</th>\n </tr>\n '; $each(crediteaseReportData.blackList.result.riskItems,function(riskItem,$index){ $out+='\n <tr>\n <td style="border: 1px solid #ddd; width: 218px; padding: 8px;">'; $out+=$escape(riskItem.riskItemType); $out+='</td>\n <td style="border: 1px solid #ddd; width: 218px; padding: 8px;">'; $out+=$escape(riskItem.riskItemValue); $out+='</td>\n <td style="border: 1px solid #ddd; width: 218px; padding: 8px;">'; $out+=$escape(riskItem.riskType); $out+='</td>\n <td style="border: 1px solid #ddd; width: 218px; padding: 8px;">'; $out+=$escape(riskItem.riskTime); $out+='</td>\n </tr>\n '; }); $out+='\n </tbody>\n\n </table>\n </td>\n </tr>\n\n <tr>\n <th style="border: 1px solid #ddd;background: #f5f5f5;padding: 8px;width: 111px;border-top: 1px solid #ddd;vertical-align: top;">借款情况</th>\n <td style="margin-bottom: 1px">\n <table class="table table-bordered" style="margin-bottom: 0px">\n <tbody>\n <tr>\n <th style="border: 1px solid #ddd;background: #f5f5f5;width: 218px;padding: 8px;">借款时间</th>\n <th style="border: 1px solid #ddd;background: #f5f5f5;width: 218px;padding: 8px;">借款金额</th>\n <th style="border: 1px solid #ddd;background: #f5f5f5;width: 218px;padding: 8px;">审批结果</th>\n <th style="border: 1px solid #ddd;background: #f5f5f5;width: 218px;padding: 8px;">目前状态</th>\n </tr>\n '; $each(crediteaseReportData.queryLoan.result.loanRecords,function(loanRecord,$index){ $out+='\n <tr>\n <td style="border: 1px solid #ddd; width: 218px; padding: 8px;">'; $out+=$escape(loanRecord.loanTime); $out+='</td>\n <td style="border: 1px solid #ddd; width: 218px; padding: 8px;">'; $out+=$escape(loanRecord.amount); $out+='</td>\n <td style="border: 1px solid #ddd; width: 218px; padding: 8px;">'; $out+=$escape(loanRecord.approveStatus); $out+='</td>\n <td style="border: 1px solid #ddd; width: 218px; padding: 8px;">'; $out+=$escape(loanRecord.currentStatus); $out+='</td>\n </tr>\n '; }); $out+='\n <tr><td>逾期统计:共借款逾期'; $out+=$escape(crediteaseReportData.queryLoan.result.overdue['overdueTimes']); $out+='次,90天以上逾期 '; $out+=$escape(crediteaseReportData.queryLoan.result.overdue.90overdueTimes]); $out+=' 次,180天以上逾期 '; $out+=$escape(crediteaseReportData.queryLoan.result.overdue['180overdueTimes']); $out+=' 次</td></tr>\n </tbody>\n </table>\n </td>\n </tr>\n\n\n\n\n </tbody>\n</table>'; return new String($out);} <filename> yx_creditease_detail <name> Syntax Error
后台返回的json字符串格式如下:
"queryLoan": { "crediteaseId": 1, "data": "{"overdue":{"180overdueTimes":0,"overdueTimes":0,"90overdueTimes":0},"loanRecords":[{"amount":"(20000,50000]","approveStatus":"未通过","approveStatusCode":"203","currentStatus":"---","currentStatusCode":"---","loanTime":"2015"}]}", "idCard": "510226196602284031", "queryType": "queryLoan", "querytime": 1467870500000, "responseCode": "000000", "responseContent": "成功", "result": { "loanRecords": [ { "amount": "(20000,50000]", "approveStatus": "未通过", "approveStatusCode": "203", "currentStatus": "---", "currentStatusCode": "---", "loanTime": "2015" } ], "overdue": { "180overdueTimes": 0, "90overdueTimes": 0, "overdueTimes": 0 } }
具体是因为添加了如下代码:
<tr><td>逾期统计:共借款逾期{{crediteaseReportData.queryLoan.result.overdue['overdueTimes']}}次,90天以上逾期 {{crediteaseReportData.queryLoan.result.overdue.90overdueTimes}} 次,180天以上逾期 {{crediteaseReportData.queryLoan.result.overdue['180overdueTimes']}} 次</td></tr>
注意加入如下代码时,是没有任何异常出现的:
{{crediteaseReportData.queryLoan.result.overdue.overdueTimes}}
但是加入下面代码后,马上报语法错误:
{{crediteaseReportData.queryLoan.result.overdue.90overdueTimes}}
解决方案
出现上图原因是因为json属性的命名格式有数字,导致不能直接使用对象"."属性的方式crediteaseReportData.queryLoan.result.overdue.90overdueTimes
只需要修改为如下类似数组方式即可:
crediteaseReportData.queryLoan.result.overdue['90overdueTimes']
相关文章推荐
- 使用 Python 处理 JSON 格式的数据
- XML 与 JSON 优劣对比
- VBA将excel数据表生成JSON文件
- newtonsoft.json解析天气数据出错解决方法
- vbs 解析json jsonp的方法
- Ruby和Ruby on Rails中解析JSON格式数据的实例教程
- Extjs4如何处理后台json数据中日期和时间
- C#实现将类的内容写成JSON格式字符串的方法
- JQuery ajax返回JSON时的处理方式 (三种方式)
- jquery JSON的解析方式示例介绍
- c#版json数据解析示例分享
- ASP JSON类文件的使用方法
- C# JSON格式化转换辅助类 ConvertJson
- C#实现对Json字符串处理实例
- C#实现Json转Unicode的方法
- php解析json数据实例
- PHP中JSON的应用技巧
- PHP6 先修班 JSON实例代码
- 关于JSON以及JSON在PHP中的应用技巧
- .Net中的json操作类用法分析