Knime ETL 工具 Jason数据解析到DB
1. 下面例子是一段Jason代码
[{"ID":1,"name":"张三","Chinese":90,"Math":80},{"ID":2,"name":"李四","Chinese":75,"Math":90},{"ID":3,"name":"王五","Chinese":68,"Math":100}]
2. 用文本文件存储上面代码。 test_jason.txt
3. 用File Reader控件读取以上文本文件。
4.添加String to JSON控件。
5. 添加JSON Path控件。
注:JSON Path说明
JSONPath is a similar to XPath alternative for JSON.
The result can be a single value or a list of multiple values (when the path is indefinite). In case there are multiple results and the selected output type cannot handle it (not a list of the selected type, or a JSON) the execution will fail. If the result cannot be represented in the selected type, missing value will be returned.
There are two notations, dot-notation:$.book[1].title and bracket-notation: $['book'][1]['title'] (indexing starts from 0, negative indices are relative to the last element).
Example input:
{"book": [ {"year": 1999, "title": "Timeline", "author": "Michael Crichton"}, {"year": 2000, "title": "Plain Truth", "author": "Jodi Picoult"} ]}
Example results:
$.book[0]
{"year": 1999, "title":
"Timeline", "author": "Michael Crichton"} (JSON or String
single value)
$.book[*].year
[1999,2000] (JSON,
Int or Real list)
$.book[2].year
? (no such
part)
$.book[?(@.year==1999)].title
Timeline
(String) or "Timeline" (JSON)
The default path ($..*) will select all possible subparts (excluding the whole JSON value).
When you request the paths instead of values for the $.book[0].* JSONPath, you will get the paths -in bracket notation- as a list of Strings:
- $['book'][0]['year']
- $['book'][0]['title']
- $['book'][0]['author']
which are valid JSONPaths for the input JSON value.
The filters ?(expr)can be used to select contents with specific properties, for example $..book[?(@.publisher)] selects the books that specify their publisher (@ refers to the actual element).