[设计器]JSON数据集

编辑
  • 文档创建者:漩涡
  • 浏览次数:16868次
  • 编辑次数:22次
  • 最近更新:Kevin-s 于 2019-06-02
  • 1. 描述

    随着 JavaScript 的流行,JSON 格式的数据也被越来越广泛的使用,但是由于 JSON 格式的灵活性,把这类数据结构和其他数据一起分析的时候,就会面临结构不统一导致无法分析的问题,在帆软报表中是没有办法直接使用的。


    2. 解决方案

    帆软市场提供 JSON数据集插件


    3. 安装插件

    设计器插件安装方法参照 设计器插件管理

    服务器安装插件方法参照 服务器插件管理


    4. 使用教程

    4.1 新建数据连接

    打开设计器的服务器->定义数据连接菜单,可以添加一个 JSON 数据连接,输入链接地址,如下:



         含义
      地址  地址可以支持参数,和数据集一样,注意提供一个默认参数供设计的时候查询用。
      用户名
      密码
      输入用户名和密码进行认证,不需要认证就不填写
      请求类型       GET模式和POST模式的参数传递方式不一样,GET是拼接到URL上,POST是放到HTTP请求体中,并且POST模式的参数需要自己添加。
      普通参数  普通参数
      头参数  常用不变的量一般都是走header, 因为每次请求都带header
      编码    如果文件是非utf-8编码的,就需要在原始编码这一栏选择对应的编码,否则无法正确的解析文本信息。


    4.2 新建 JSON 数据集

    在模板中添加 JSON 数据集,如下图:

    选择上面新建的数据连接,输入查询语句,可以获取到 JSON 中的数据

    比如下面的示例就是查询书店中所有的书信息:


    键排序:是指对获取出来的列名做排序。

    预读列名:先遍历所有的数据,把列名获取出来,可用于 JSON 结构不整齐的情况,会稍微的降低效率。


    4.3 新建JSON程序数据集

    注: JAR 需要使用 2019-3-13 及以后,插件版本需要 9.2.3 及以后

    使用 JavaScript 脚本,将JSON对象转换为二维表。这种方式可以解决所有不能直接用 JSON 数据集的场景,可以根据用户自己的数据结构定制脚本,从而实现和报表的对接。

    在模板中添加 JSON 数据集,如下图:


    选择上面新建的数据连接,输入脚本,可以获取到数据

    比如查询所有书籍的信息:



    内置函数和变量    含义
      $  表示 JSON 内容的对象
      unique(array)  将数组进行去重,主要用于列名处理
      console.log(info)  输出调试信息,会在日志文件中输出 INFO 级别的信息
      console.error(err)  输出错误级别的信息,会在日志文件中输出 ERROR 级别的信息
      merge(table, column)  合并数据集的内容和列名对象


    5. 示例

    5.1 新建数据连接

    JSON 文件地址:http://fine-doc.oss-cn-shanghai.aliyuncs.com/book.json,用户名密码为空


    5.2 新建 JSON 数据集

    分别使用不同的查询语句:

    1)带参数的查询


    2)价格小于 10 的书籍


    $.store.book[?(@.price<10)]

    3)所有书籍作者的集合


    $.store.book[*].author

    注:更多的查询语法规则,参见:https://github.com/richie2008/JsonPath

    注:键值对顺序不一致可能造成数据错乱,可以开启预读列名


    5.3 新建 JSON 程序数据集

    1)所有书籍

    var books = $.store.book;
    var rowCount = books.length;
    console.log("行数为:" + rowCount);
    var table = [];
    var column = [];
    books.forEach(function(value, index) {
        var row = [];
        for (var key in value) {
            row.push(value[key]);
            column.push(key);
        }
        console.log("该行共有" + row.length + "列");
        table.push(row);
    });
    return merge(table, unique(column));




    2)价格小于 10 的书籍

    var books = $.store.book;
    var rowCount = books.length;
    var table = [];
    var column = [];
    books.forEach(function(value, index) {
        var row = [];
        if (value.price < 10) {
          for (var key in value) {
            row.push(value[key]);
            column.push(key);
          }
          table.push(row);
        }
    });
     
    return merge(table, unique(column));

    3)所有书籍的作者集合

    var books = $.store.book;
    var rowCount = books.length;
    var table = [];
    var column = ["author"];
    books.forEach(function(value, index) {
        var row = [];
        row.push(value.author);
        table.push(row);
    });
     
    return merge(table, column);

    附件列表


    主题: 数据连接
    标签: 暂无标签 编辑/添加标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]