2011-07-27 34 views
0

我正在使用VisualForce页面生成由jQuery插件读取的JSON文件。我的页面使用控制器来查询记录并输出它们。代码如下:Salesforce - 从SOQL结果创建JSON

编辑

解决了!下面是我通过改变

public Opportunity opp {get; private set;} 

public Opportunity[] opp {get; private set;} 

然后使用三角胶制成我OPP对象到一个列表中我找到了解决方案(信用http://blog.lopau.com/visualforce-row-count/

:通过值,可重复循环。

<apex:page standardstylesheets="false" controller="myOppCon" sidebar="false" showHeader="false" contentType="application/x-JavaScript; charset=utf-8"> 
[ 
<apex:variable value="1" var="rowNum"/> 
<apex:variable var="rawData" value="opp" /> 
<apex:repeat value="{!opp}" var="List" id="theRepeat"> 
{ 
"id":"{!List.id}", 
"title":"{!List.name}", 
"start":"<apex:outputText value="{0,date,E',' dd MMM yyyy HH:mm:ss z}"> 
      <apex:param value="{!List.Trip_Start_DateTime__c}" /> 
     </apex:outputText>", 
"end":"<apex:outputText value="{0,date,E',' dd MMM yyyy HH:mm:ss z}"> 
      <apex:param value="{!List.Trip_End_DateTime__c}" /> 
     </apex:outputText>", 
"url":"/{!List.id}" 
}, 
<apex:variable var="rowNum" value="{!VALUE(rowNum) + 1}"/> 
</apex:repeat> 
{}] 
</apex:page> 
+0

对于它的价值,我在许多地方这样做我倾向于发现在代码中构建字符串更容易,只需在VF页面中输出一行即可。 –

回答

3

在你的控制器,你可以利用下面的序列化类https://github.com/SimonGoodyear/sobject-serialization

,那么你可以简单地暴露结果字符串,你可以从你的VF页面访问属性。

+0

如果你的回答包含代码sniplets和/或直接引用,那么这样会很好,所以我们不必点击一个微博链接。 – Soren