1

我想制作一个 http 标注来导入 json 并在 visualforce 页面中显示信息。我遇到的问题是 json 是嵌套的,所以我需要遍历子节点。

我使用 json2apex 应用程序派生了以下类:

public class CHForm {

public class FilingHistoryItem {
    public String DocumentDate;
    public String FormType;
    public String DocumentCategory;
    public String Document;
    public String DocumentDescription;
  }

public FilingHistory FilingHistory;

public class FilingHistory{
    public List<FilingHistoryItem> FilingHistoryItem;
  }


public static CHForm parse(String json) {
    return (CHForm) System.JSON.deserialize(json, CHForm.class);
  }


}

在我的控制器类中,我可以创建一个 CHForm 对象(reponseForm)并使用以下命令将 json 反序列化为reponseForm对象:

HttpResponse res = h.send(req);
String chFormJson = res.getBody();
responseForm  = CHForm.parse(chFormJson);

但是我如何在 visualforce 页面中显示所有 FilingHistoryItem 的列表?我是否需要在我的控制器中创建一个列表对象,或者有没有办法直接从 visualforce 页面引用列表?

4

1 回答 1

0

我对你的顶点有点困惑,不应该是:

public List<FilingHistoryItem> FilingHistory;

public class FilingHistoryItem {
    public String DocumentDate;
    public String FormType;
    public String DocumentCategory;
    public String Document;
    public String DocumentDescription;
  }

然后你就可以做到:

<apex:repeat value="{!responseform.FilingHistory.}" var="item" id="theRepeat">
   <apex:outputText value="{! item.DocumentDate}" />  //etc
</apex:repeat

你现在设置的方式,我认为它可能会像这样工作:

 <apex:repeat value="{!responseform.FilingHistory.FilingHistoryItem}" var="item" id="theRepeat">
       <apex:outputText value="{! item.DocumentDate}" />  //etc
    </apex:repeat

但是你将列表属性命名为“...Item”而不是“..Items”有点奇怪,并且嵌套如此之深,但也许这是一个json依赖。

于 2014-01-10T13:01:51.587 回答