UNPKG

redscorpion-utils

Version:

A good JavaScript tools

1 lines 2.12 kB
const defaultName='default';export const isJson=(jsonData)=>{if(jsonData===null||jsonData===''){return false}if(typeof jsonData==='object'||jsonData instanceof Object){return true}if(typeof jsonData==='string'){try{const json=JSON.parse(jsonData);if(typeof json==='object'||json instanceof Object){return true}return false}catch(e){return false}}return false};export const set=(jsonData={},name=defaultName,value='',remove=false)=>{if(!isJson(jsonData)){console.assert(false,'[RS-JSON warn]: The incoming data is not in json format!');return}if(name===''){console.assert(false,'[RS-JSON warn]: The name cannot be empty or empty string!');return}const arrName=name.split('.');let val=value;let old={};if(typeof jsonData==='string'){old=JSON.parse(jsonData)}else{old={...jsonData}}if(arrName.length>1){const j=[arrName.length];j[0]=old[arrName[0]]?old[arrName[0]]:{};for(let i=0;i<arrName.length;i+=1){if(i>0){if(j[i-1][arrName[i]]){j[i]={...j[i-1][arrName[i]]}}else if(remove===true){j[i]=null}else{j[i]={}}}}for(let i=arrName.length-1;i>0;i-=1){if(remove===true){if(i===arrName.length-1){j[i]=null;delete j[i-1][arrName[i]];j[i-1]={...j[i-1]}}else{j[i-1][arrName[i]]={...j[i]}}}else if(i===arrName.length-1){j[i]=val;if(typeof j[i-1]==='object'){j[i-1][arrName[i]]=val}else{console.assert(false,'[RS-JSON warn]: String type cannot be assigned!');return null}}else{j[i-1][arrName[i]]={...j[i]}}}val={...j[0]}}if(remove===true&&arrName.length===1){delete old[arrName[0]]}else{old[arrName[0]]=val}return old};export const get=(jsonData={},name=defaultName)=>{if(!isJson(jsonData)){console.assert(false,'[RS-JSON warn]: The incoming data is not in json format!');return}if(name===''){console.assert(false,'[RS-JSON warn]: The name cannot be empty or empty string!');return}let data;if(typeof jsonData==='string'){data=JSON.parse(jsonData)}else{data={...jsonData}}const arrName=name.split('.');for(let i=0;i<arrName.length;i+=1){if(data[arrName[i]]){data=data[arrName[i]]}else{data=null;break}}return data};export const remove=(jsonData={},name=defaultName)=>set(jsonData,name,null,true);export default{isJson,set,get,remove};