转:https://blog.csdn.net/liuhuaizhou133/article/details/41 在负责接口这一块的工作也有很长时间了,实时的,非实时的,主动,非主动的都做了不少,由于其它java系统对json的大量使用,第三方系统对peoplesoft系统提出了接口返回数据需要满足json格式的要求,在查询了大量的资料以及案例后,也来做一个相应的总结。如下代码是摘抄自其他论坛,方便以后使用。 Function IScript_GetJSON Local SQL &usersCursor = CreateSQL("SELECT OPRID, OPRDEFNDESC, EMAILID FROM PSOPRDEFN WHERE ROWNUM < 6"); Local SQL &rolesCursor; Local string &oprid; Local string &oprdefndesc; Local string &emailid; Local string &rolename; Local boolean &isFirstUser = True; Local boolean &isFirstRole = True; %Response.Write("["); While &usersCursor.Fetch(&oprid, &oprdefndesc, &emailid) REM ** comma logic; If (&isFirstUser) Then &isFirstUser = False; Else %Response.Write(", "); End-If; %Response.Write("{""OPRID"": """ | EscapeJavascriptString(&oprid) | """, ""OPRDEFNDESC"": """ | EscapeJavascriptString(&oprdefndesc) | """, ""EMAILID"": """ | EscapeJavascriptString(&emailid) | """, ""ROLES"": ["); &rolesCursor = CreateSQL("SELECT ROLENAME FROM PSROLEUSER WHERE ROLEUSER = :1 AND ROWNUM < 6", &oprid); &isFirstRole = True; While &rolesCursor.Fetch(&rolename); REM ** comma logic; If (&isFirstRole) Then &isFirstRole = False; Else %Response.Write(", "); End-If; %Response.Write("""" | EscapeJavascriptString(&rolename) | """"); End-While; &rolesCursor.Close(); %Response.Write("]}"); End-While; %Response.Write("]"); &usersCursor.Close(); End-Function; 返回结果示例 [ { "OPRID": "ADRIESSEN", "OPRDEFNDESC": "Anton Driessen", "EMAILID": "ADRIESSEN@server.com", "ROLES": [ "All Processes", "All Query Access Groups", "EPM Scorecard Viewer", "Portal User", "Query Access - All FSCM" ] }, { "OPRID": "ADUPOND", "OPRDEFNDESC": "Alain Dupond", "EMAILID": "ADUPOND@server.com", "ROLES": [ "All Processes", "All Query Access Groups", "EPM Scorecard Viewer", "Portal User", "Query Access - All FSCM" ] }, { "OPRID": "AEGLI", "OPRDEFNDESC": "Anna Egli", "EMAILID": "AEGLI@server.com", "ROLES": [ "All Processes", "All Query Access Groups", "EPM Scorecard Viewer", "Employee Global Payroll", "Portal User" ] }, { "OPRID": "AERICKSON", "OPRDEFNDESC": "Arthur Erickson", "EMAILID": "AERICKSON@server.com", "ROLES": [ "Accounts Payable Manager", "All Processes", "All Query Access Groups", "Application Homepages", "EP General Options" ] }, { "OPRID": "AFAIRCHILD", "OPRDEFNDESC": "Alison Fairchild", "EMAILID": "AFAIRCHILD@server.com", "ROLES": [ "Applicant", "All Processes", "All Query Access Groups", "EPM Scorecard Viewer", "Employee ELM" ] } ]