mirror of
https://github.com/fluencelabs/jsonpath
synced 2025-03-27 12:21:03 +00:00
67 lines
1.7 KiB
JavaScript
67 lines
1.7 KiB
JavaScript
import * as jsonpath from "@browser/jsonpath-wasm";
|
|
|
|
function getTextarea() {
|
|
return document.querySelector('#json-example');
|
|
}
|
|
|
|
function getJsonpathInput() {
|
|
return document.querySelector('#jsonpath-input');
|
|
}
|
|
|
|
function getReadBtn() {
|
|
return document.querySelector('#read-json');
|
|
}
|
|
|
|
function getReadResult() {
|
|
return document.querySelector('#read-result');
|
|
}
|
|
|
|
function initData(url) {
|
|
return fetch(url)
|
|
.then((res) => res.text())
|
|
.then((jsonStr) => getTextarea().value = jsonStr)
|
|
.catch(console.error);
|
|
}
|
|
|
|
function initEvent() {
|
|
getJsonpathInput().onkeyup = function(e) {
|
|
var charCode = (typeof e.which === "number") ? e.which : e.keyCode;
|
|
if(charCode == 13) {
|
|
read();
|
|
}
|
|
}
|
|
|
|
getReadBtn().onclick = function() {
|
|
read();
|
|
}
|
|
|
|
function read() {
|
|
let ret = jsonpath.read(getTextarea().value, getJsonpathInput().value);
|
|
if(typeof ret === 'string') {
|
|
getReadResult().innerText = ret;
|
|
} else {
|
|
getReadResult().innerText = JSON.stringify(ret, null, 2);
|
|
}
|
|
}
|
|
}
|
|
|
|
function readPathParam() {
|
|
let params = location.search.substr(1)
|
|
.split('&')
|
|
.map((item) => item.split('='))
|
|
.reduce((acc, param) => {
|
|
acc[param[0]] = decodeURIComponent(param[1]);
|
|
return acc;
|
|
}, {});
|
|
|
|
if(params.path) {
|
|
getJsonpathInput().value = params.path;
|
|
let doc = getReadBtn().ownerDocument;
|
|
let event = doc.createEvent('MouseEvents');
|
|
event.initEvent('click', true, true);
|
|
event.synthetic = true;
|
|
getReadBtn().dispatchEvent(event, true);
|
|
}
|
|
}
|
|
|
|
initData('data/example.json').then(initEvent).then(readPathParam); |