package com.smartgwt.sample.showcase.client.dataintegration.json; import com.smartgwt.client.data.DataSource; import com.smartgwt.client.data.fields.DataSourceTextField; import com.smartgwt.client.types.DSDataFormat; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.grid.ListGrid; import com.smartgwt.sample.showcase.client.PanelFactory; import com.smartgwt.sample.showcase.client.ShowcasePanel; public class JsonXPathSample extends ShowcasePanel { private static final String DESCRIPTION = "DataSources can extract field values from complex JSON structures via XPath expressions. Note how the" + " address fields, which are represented in the contacts data as a subobject, appear as columns in the grid."; public static class Factory implements PanelFactory { private String id; public Canvas create() { JsonXPathSample panel = new JsonXPathSample(); id = panel.getID(); return panel; } public String getID() { return id; } public String getDescription() { return DESCRIPTION; } } public Canvas getViewPanel() { DataSource dataSource = new DataSource(); dataSource.setDataFormat(DSDataFormat.JSON); dataSource.setDataURL("data/dataIntegration/json/contactsData.js"); DataSourceTextField nameField = new DataSourceTextField("name", "Name"); DataSourceTextField emailField = new DataSourceTextField("email", "Email"); DataSourceTextField orgField = new DataSourceTextField("organization", "Organization"); DataSourceTextField phoneField = new DataSourceTextField("phone", "Phone"); DataSourceTextField streetField = new DataSourceTextField("street", "Street"); streetField.setValueXPath("address/street"); DataSourceTextField cityField = new DataSourceTextField("city", "City"); cityField.setValueXPath("address/city"); DataSourceTextField stateField = new DataSourceTextField("state", "State"); stateField.setValueXPath("address/state"); DataSourceTextField zipField = new DataSourceTextField("zip", "Zip"); zipField.setValueXPath("address/zip"); dataSource.setFields(nameField, emailField, orgField, phoneField, streetField, cityField, stateField, zipField); ListGrid grid = new ListGrid(); grid.setDataSource(dataSource); grid.setWidth100(); grid.setHeight(100); grid.setAutoFetchData(true); return grid; } public String getIntro() { return DESCRIPTION; } }