【问题标题】:Google charts API JSON not validGoogle 图表 API JSON 无效
【发布时间】:2013-06-27 09:04:17
【问题描述】:

以下代码为 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:''**} 中显示的模式值

【问题讨论】:

标签: java json google-visualization


【解决方案1】:

Google 发送给您的是JavaScript object,而不是JSON

你需要想办法去stringfyJavaScript objectJSON

查看this 问题的答案。它可能会对你有所帮助。

【讨论】:

    【解决方案2】:

    感谢大家的帮助。

    我使用 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());
    

    【讨论】:

      猜你喜欢
      • 2016-08-09
      • 2020-12-01
      • 1970-01-01
      • 2018-07-31
      • 2017-11-26
      • 1970-01-01
      • 2018-04-17
      • 2019-08-04
      • 2018-11-07
      相关资源
      最近更新 更多