0.0.3 • Published 5 years ago

json-stringfy v0.0.3

Weekly downloads
1
License
ISC
Repository
github
Last release
5 years ago

npm version

json-stringfy

json格式化,高亮展示,错误标识,获取key值在json中的路径

安装

npm i json-stringfy

使用

//  jsonHeightLight(json[, options])

import syntaxHighlight, {getValueByJsonPath} from 'json-stringfy'

// 或者使用构建好的
import syntaxHighlight, {getValueByJsonPath} from 'json-highlight/dist/index.js'
import 'json-stringfy/dist/index.css'

const json = '{"cate_id":"10","cate_type":"cate","cate_code":"click","cate_name":"点击","filter":[{"dim":"evt_id1","dim_cate":"service_property","rel":"equal","val":[{"code":"20892","name":"20892"},{"code":"456456","name":"456456"}]},{"dim":"evt_id2","dim_cate":"service_property","rel":"equal","val":[{"code":"20892","name":"asddfg"}]}],"metric":["cnt"],"flag":0}'
document.querySelector("pre").innerHTML = syntaxHighlight(json)  //需要将结果放到pre标签中

options

colorConfig: Object

可以对配置颜色风格

syntaxHighlight(json, {
  colorConfig: {
		string: '#9C5903',
		number: '#07BD1D',
		boolean: '#04228A',
		null: '#767573',
		key: '#088EDF',
		errorKey: '#f5222d',
		warningKey: '#9c5903',
	}
})

errorInfo:Array

可以对指定的key进行标识,路径支持不带筛选的jsonpath

syntaxHighlight(json, {
  errorInfo:[
		{path: 'root.filter[0].val[0].code', type: 'error'},
		{path: 'root.filter[0].val[0].name', type: 'warning'}
	],
})

效果: alt

pathTrigger:string

指定获取jsonpath的方式,默认为false,不获取jsonpath,有两个枚举值click、drag,分别为点击或拖拽的方式

当为click时,配合onClickKey属性获取path

syntaxHighlight(json, {
  pathTrigger:'click',
  onClickKey:(path)=>{
    console.log(path)
  }
})

当为drag时,需自己配置drop容器的事件,path可在e.dataTransfer.getData("path")中获取

方法

getValueByJsonPath

可通过jsonpath获取json中的属性值,jsonpath支持数组属性简单筛选

import {getValueByJsonPath} from 'json-stringfy'
let value = getValueByJsonPath('root.filter[dim="evt_id2"][0].val[0].name',json)
console.log(value)

说明

jsonpath格式

  • 常规的对象路径,例如:root.filter[0].val[0].name
  • 带筛选的数组,例如:root.filter[dim="evt_id2"][0].val[0].name