反饋已提交

網絡繁忙

JSON資料集

1. 概述

1.1 版本

報表服務器版本
JSON數據集插件
11.0V9.5.7
11.0.8V9.5.8
11.0.10V9.5.9

1.2 應用場景

随着 JavaScript 的流行,JSON 格式的數據也被越來越廣泛的使用。使用 JSON 數據集插件可以将 JSON 格式的數據轉變爲報表中可以使用的數據表。

1.3 語法規則

JSON 查詢的詳細語法規則參見文檔:JsonPath

注:JsonPath語法内寫參數的方法,與普通數據集一緻。

1.4 方案對比

對比項當前方案新方案
方案簡介本文方法,在 FineReport 中下載「JSON 數據集」插件實現

本文不做介紹

使用 FineDataLink 産品 中的「JSON 解析」算子實現

主要實現過程

需要提前學習 JSON 查詢的語法

創建 JSON 數據集後,輸入查詢語句,取出數據


「JSON 解析」算子中,無需輸入查詢語句,直接可視化選擇節點即可

2. 安裝插件

點擊下載插件:JSON數據集

插件安裝方式,可參考A11-18伺服器-插件管理

3. JSON數據集

3.1 定義 JSON 數據連接

安裝插件後,設計器菜單欄選擇服務器>定義數據連接,新建一個 JSON 數據連接,命名爲 JSON 。

輸入鏈接地址http://fine-doc.oss-cn-shanghai.aliyuncs.com/book.json,并按如下圖所示配置好其他設置項,點擊「确定」。如下圖所示:

注:請求地址返回的文本信息,只要是 JSON 格式的文本即可。

21.gif

設置項的詳細說明如下圖所示:

   設置項  含義
地址

用於輸入json文本的請求地址(支持 HTTP 和非自簽名 SSL 證書的 HTTPS

地址支持參數,和數據集一樣,注意提供一個默認參數供設計的時候查詢用;

地址支持除報表函數和單元格計算以外的所有公式;

注:建議用戶獲取參數時使用單純的接口鏈接,「 .json 文件」形式不能傳參。

用戶名密碼用於輸入認證信息,允許爲空,僅支持Authorization:Basic Base64(username:password)形式的認證
緩存有效期

用於設置緩存的有效期,單位毫秒,默認爲0,表示不緩存;

設置緩存時間後,将在首次連接後進行緩存(支持集群),緩存有效期内讀取的結果均爲緩存内容,不随請求接口數據變化而變化

請求類型用來設置不同的請求類型,并根據不同的請求類型進行傳參設置

請求類型默認爲 GET,可修改爲 POST_FROM 及 POST_RAW ,關於請求類型的介紹可參見本文 3.3 節。

普通參數

普通參數即放在 Body 中的,通常說的 GET 和 POST 即普通參數

普通參數支持參數的增删改,并可通過刷新按鈕直接刷新出請求地址中設置的參數(此時将用刷新出的參數覆蓋原有的參數設置)

頭參數

頭參數即放在 Header 中,常用不變的量一般都是走 header, 因爲每次請求都帶 header

請求頭參數僅支持手動增删改,公式支持除報表函數和單元格計算以外的所有公式

編碼如果文件是非 UTF-8 編碼的,就需要在原始編碼這一欄選擇對應的編碼,否則無法正确的解析文本信息

注1:V9.3.3 版本的插件,腳本引擎支持自主選擇 JavaScript V8 或者 Java(默認),在無法支持 JavaScript V8 的機器上自動使用 Java 版本的腳本引擎。

注2:添加參數類型取決於用戶服務器需要接收什麽類型的參數。

3.2 JSON數據集取數

設計器新建 JSON 數據集,如下圖所示:

3.2.1 取出所有數據

點擊新建好的 JSON 數據集編輯按鈕,輸入查詢語句,即可獲取到 JSON 中的數據。查詢語句欄輸入$.store.book[*],查詢出書店中所有的書信息,如下圖所示:

注:$.store.book[*] 是 JSON 的固定引用方式,代表取出 store 下 book 的全部數據。

點擊「預覽」按鈕,查看取出來的 JSON 數據。

  • 鍵排序:是指對獲取出來的列名做排序,默認即爲不開啓(如果是不完整的json結構,需要同時開啓預讀列名才有效)

  • 預讀列名:先遍曆所有的數據,把列名獲取出來,可用於 JSON 結構不整齊的情況,會稍微的降低效率。默認即爲不開啓。

3.2.2 取其中某一列

查詢語句欄輸入$.store.book[*].category,取出 category 列的數據。

點擊預覽按鈕,查看取出來的 JSON 數據。

3.2.3 條件取數

查詢語句欄輸入$.store.book[?(@.price<10)]取出價格小於 10 的書籍。


點擊預覽按鈕,查看取出來的 JSON 數據。


注1:鍵值對順序不一緻可能造成數據錯亂,可以開啓預讀列名。

注2:已完成模板參見下面的 JSON 數據集示例1.cpt。

3.3 傳參方式介紹

傳參方式區别

模式傳遞方式
GET拼接到 URL 上
POST_FORM需要傳的是 key-value,可以添加動态參數
POST_RAW只要 value 就可以了,可以添加動态參數

注1:建議用戶獲取參數時地址使用單純的接口鏈接,「 .json 」文件形式不支持傳參。

注2:在決策報表中,如果希望JSON數據連接和控件聯動,必須在JSON數據集中添加和JSON數據連接中同名的參數(即使用不上這個參數)。

注3:JSON數據集傳參,參數值必須爲固定值,而不可以是另一個參數,例如fine_username等。

3.3.1 GET 傳參


創建 json 連接,請求類型選擇「GET」,在 json 文本的請求地址後面加上添加參數,如下圖所示:

3.gif

添加「json」數據集,輸入查詢語句,返回參數 book 對應的數據


3.3.4 POST_RAW 傳參

由於 POST_RAW 傳參需要手動指定參數,所以在請求頭參數中,設置 Content-Type 爲 application/json ,表示客戶端告訴服務器實際發送的數據類型爲 JSON 格式。

創建 JSON 數據連接,請求類型選擇「POST_RAW」。在地址處輸入對應的 json 文本接口鏈接。如下圖所示:

4.gif

預覽時,返回參數 book 對應的數據,如下圖所示:

使用動态參數時,通過 ${} 進行動态傳參,點擊刷新按鈕進行參數配置:

5.gif

4. JSON程序數據集

使用 JavaScript 腳本,将 JSON 對象轉換爲二維表。這種方式可以解決所有不能直接用 JSON 數據集的場景,可以根據用戶自己的數據結構定制腳本,從而實現和報表的對接。

注: 新建和使用 JSON 程序數據集,設計器需要使用 2019-03-13 及以後版本的 JAR 包,插件需要更新到 9.2.3 及以後版本。

4.1 新建JSON程序數據集

設計器中新建 JSON 程序數據集,如下圖所示:

4.2 取出所有數據

點擊新建好的 JSON 數據集編輯按鈕,輸入下圖中的腳本代碼,即可獲取所有書籍的數據。

腳本代碼:

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))

7.gif

4.3 條件取數

腳本編輯框中如下腳本代碼,取出價格小於 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));

點擊預覽按鈕,查看取出來的 JSON 數據。


4.4 取出其中某一列

腳本編輯框中如下腳本代碼,取出所有書籍的作者集合。

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);


點擊預覽按鈕,查看取出來的 JSON 數據。

注:已完成模板參見下面的 JSON數據集示例2.cpt。

5. 效果預覽

JSON數據集示例1.cpt:

JSON數據集示例2.cpt:

注:PC 及其移動端效果一緻,可依據實際需求選擇對應的數據集。

6. 已完成模板

附件列表


主題: 資料準備
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉