这是一个简单的 Java servlet,只支持 HTTP GET 请求。它读入股票的值和格式请求参数。然后调用 getStocks()
方法。该方法调用 Yahoo! Finance 获取股票数据。Yahoo! 只支持 CSV 格式的数据,因此 getStocks() 方法将其解析到一个
Stock 对象列表。清单 4 展示了这个简单的数据结构:
清单 4. 股票数据结构
public class Stock { private final String symbol; private final String name; private final double price; //getters and setters omitted
public String toXml(){ return "< stock>< symbol>" + symbol + "< /symbol>< name><![CDATA[" + name + "]]>< /name>< price>" + price + "< /price>< /stock>"; }
public String toJson(){ return "{ 'stock' : { 'symbol' : " +symbol +", 'name':" + name + ", 'price': '" + price + "'}}"; }
public static String toXml(List<Stock> stocks){ StringBuilder xml = new StringBuilder("<stocks>"); for (Stock s : stocks){ xml.append(s.toXml()); } xml.append("</stocks>"); return xml.toString(); }
public static String toJson(List<Stock> stocks){ StringBuilder json = new StringBuilder("{'stocks' : ["); for (Stock s : stocks){ json.append(s.toJson()); json.append(','); } json.deleteCharAt(json.length() - 1); json.append("]}"); return json.toString(); } }
|
每个 Stock 都有三个属性— symbol、name 和 price — 和几个便捷的方法,以便将其自己转换成 XML 字符串或 JSON
字符串。它提供了一个工具方法,用于将 Stock 对象列表转换成 XML 或 JSON。回到 清单 3,根据格式请求参数,Stock 对象列表被转换成 XML