案例

今天在使用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']

artTemplate--使用artTemplate时,由于json对象属性有数字命名格式 导致调用报错 syntax error的更多相关文章

  1. sql中有一些保留字,当你的字段名是它的保留字时,这个时候sql语句的字段不加``就会报错

    sql中有一些保留字,当你的字段名是它的保留字时,这个时候sql语句的字段不加``就会报错

  2. js对象转换为json格式时,js对象属性中有值为null和undefined注意事项

    当属性值为null时: 当属性值为undefined时: 只有当属性值为未定义时, js对象转换成json格式时会忽略该属性.

  3. js JSON对象属性

    json对象是是一种用于原生json分析的对象,无法对其进行构造函数调用,用java术语 来说,它相当于能够直接使用类方法的工具类JSON对象的属性parse(text[,reviver]);对参数t ...

  4. C# 反射(GetType) 获取动态Json对象属性值的方法

    之前在开发一个程序,希望能够通过属性名称读取出属性值,但是由于那时候不熟悉反射,所以并没有找到合适的方法,做了不少的重复性工作啊! 然后今天我再上网找了找,被我找到了,跟大家分享一下. 其实原理并不复 ...

  5. php数组转json对象并保留数字索引

    本文要解决的问题是php不带索引的数组转换为json对象(而非默认的json数组) php中数组转json使用的方法是系统自带的:json_encode php中数组转json的规则是:当没有指定索引 ...

  6. 报错:Error starting Jetty. JSON Metrics may not be available.java.net.BindException:地址已在使用

    报错背景: 刚在CDH中集成Flume插件,启动报错 报错现象: Error starting Jetty. JSON Metrics may not be available. java.net.B ...

  7. Json解析报错: Error is : Unescaped control character...的解决方法

    在利用json-framework来实现json解析的过程时,会出现"-JSONValue Failed. Error is : Unescaped control character&qu ...

  8. Java处理JPEG图片时,需要导入com.sun.image.codec.jpeg.JPEGImageEn,报错处理

    Java处理JPEG图片时,需要导入com.sun.image.codec.jpeg.JPEGImageEn,会报错,不能使用相应的方法. 原因:java访问限制级api的时候,默认的eclipse设 ...

  9. Error--解决使用Application Loader提交ipa包审核时的报错:ERROR ITMS-90168: "The binary you uploaded was invalid."

    在提交iTunes Connect审核时,使用Application Loader提交ipa包时报错:ERROR ITMS-90168: "The binary you uploaded w ...

随机推荐

  1. python 连接 SQL Server 数据库

    #!/usr/bin/python # -*- coding:utf-8 -*- import pymssql import pyodbc host = '127.0.0.1:1433' user = ...

  2. DEVOPS技术实践_07:Jenkins 管道工作

    一 简介 由于在公司构建很多工作,都是使用的maven工作构建的,这种构建方式很大缺点就是所有的工作都需要一步一步的配置,当项目较多,需求变动时,需要很大的精力去修改配置,很费劲 Pipeline即为 ...

  3. Elasticsearch基本概念和使用

    Elasticsearch基本概念和使用 1.操作索引 1.1.基本概念 Elasticsearch也是基于Lucene的全文检索库,本质也是存储数据,很多概念与MySQL类似的. 对比关系: 索引( ...

  4. 机器学习——EM算法与GMM算法

    目录 最大似然估计 K-means算法 EM算法 GMM算法(实际是高斯混合聚类) 中心思想:①极大似然估计 ②θ=f(θold) 此算法非常老,几乎不会问到,但思想很重要. EM的原理推导还是蛮复杂 ...

  5. 分支结构,for循环,while循环,跳出循环

    #流程控制 概念:通过规定的语句让程序代码有条件的按照一定的方 式执行 顺序结构 按照书写顺序来执行,是程序中最基本的流程结构 选择结构(分支结构.条件结构) 分支结构 单路分支:if(执行的条件){ ...

  6. POJ2411 Mondriaan's Dream 题解 轮廓线DP

    题目链接:http://poj.org/problem?id=2411 题目大意 给你一个 \(n \times m (1 \le n,m \le 11)\) 的矩阵,你需要用若干 \(1 \time ...

  7. 「BZOJ4590」「SHOI2015」 自动刷题机 解题报告

    自动刷题机 Description 曾经发明了信号增幅仪的发明家SHTSC又公开了他的新发明:自动刷题机--一种可以自动AC题目的神秘装置.自动刷题机刷题的方式非常简单:首先会瞬间得出题目的正确做法, ...

  8. samba服务器红帽5.4搭建,亲测可用!!!

    samba服务器搭建 服务器的环境 红帽5.4 vm15 挂载光盘 mount mount -t iso9660 设备目录 /mnt 表示挂载 软件包安装 samba服务器只需安装两个软件包,先找到软 ...

  9. 5.pycharm中导入第三方模块的方法

    最近刚入门学习python,网上查找了一些资料,发现python编程用的软件pycharm还是比较多的,于是就跟随大众,学习使用pycharm,在学习的过程中,想要导入第三方模块pyperclip,但 ...

  10. 2019牛客暑期多校第一场题解ABCEFHJ

    A.Equivalent Prefixes 传送门 题意:给你两个数组,求从第一个元素开始到第p个元素 满足任意区间值最小的元素下标相同的 p的最大值. 题解:我们可以从左往右记录到i为止每个区间的最 ...