下面的代码为Google图表返回json
public static DataTable generateDataTable(){
// Create a data table,
DataTable data = new DataTable();
ArrayList cd = new ArrayList();
cd.add(new ColumnDescription("name", ValueType.TEXT, "Animal name"));
cd.add(new ColumnDescription("link", ValueType.TEXT, "Link to wikipedia"));
cd.add(new ColumnDescription("population", ValueType.NUMBER, "Population size"));
cd.add(new ColumnDescription("vegeterian", ValueType.BOOLEAN, "Vegetarian?"));
data.addColumns(cd);
// Fill the data table.
try {
data.addRowFromValues("Aye-aye", "http://en.wikipedia.org/wiki/Aye-aye", 100, true);
data.addRowFromValues("Sloth", "http://en.wikipedia.org/wiki/Sloth", 300, true);
data.addRowFromValues("Leopard", "http://en.wikipedia.org/wiki/Leopard", 50, false);
data.addRowFromValues("Tiger", "http://en.wikipedia.org/wiki/Tiger", 80, false);
} catch (TypeMismatchException e) {
System.out.println("Invalid type!");
}
return data;
}
public static void main(String []args){
String json = JsonRenderer.renderDataTable(generateDataTable(), false, false).toString();
System.out.println(json);
}但是返回的JSON
{cols:[{id:'name',label:'Animal name',type:'string',pattern:''},{id:'link',label:'Link to wikipedia',type:'string',pattern:''},{id:'population',label:'Population size',type:'number',pattern:''},{id:'vegeterian',label:'Vegetarian?',type:'boolean',pattern:''}]}粘贴到http://jsonlint.com/中时无效
另外,返回的json {id:'name',label:'Animal name',type:'string',**pattern:''**}中显示的模式值是什么
发布于 2013-06-28 03:27:20
谢谢你们的帮助。
我用Jackson解决了这个问题,它可以引用未引用的关键字
import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.JsonParser;
JsonNode root = null;
String json = JsonRenderer.renderDataTable(generateDataTable(), true, false).toString();
try{
JsonParser parser = new JsonFactory().createJsonParser(json)
.enable(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES)
.enable(JsonParser.Feature.ALLOW_SINGLE_QUOTES);
root = new ObjectMapper().readTree(parser);
}catch(Exception e){
logger.error(e.getMessage());
}
response.getWriter().println(root.toString());发布于 2013-06-27 17:25:31
Google发送给您的是JavaScript object而不是JSON。
您需要找出一种将JavaScript object stringfy到JSON的方法。
看看this问题的答案。这可能会对你有帮助。
https://stackoverflow.com/questions/17338978
复制相似问题