MCPcopy Index your code
hub / github.com/zxlie/FeHelper / _formatJsonPath

Function _formatJsonPath

apps/json-format/format-lib.js:726–872  ·  view source on GitHub ↗
(keys, language)

Source from the content-addressed store, hash-verified

724
725 // 格式化JSON路径为不同编程语言格式
726 let _formatJsonPath = function(keys, language) {
727 if (!keys.length) {
728 return _getLanguageRoot(language);
729 }
730
731 let path = '';
732
733 switch (language) {
734 case 'javascript':
735 path = '$';
736 for (let i = 0; i < keys.length; i++) {
737 let key = keys[i];
738 if (key.startsWith('[') && key.endsWith(']')) {
739 // 数组索引
740 path += key;
741 } else {
742 // 对象属性
743 if (/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key)) {
744 // 有效的标识符,使用点语法
745 path += '.' + key;
746 } else {
747 // 包含特殊字符,使用方括号语法
748 path += '["' + key.replace(/"/g, '\\"') + '"]';
749 }
750 }
751 }
752 break;
753
754 case 'php':
755 path = '$data';
756 for (let i = 0; i < keys.length; i++) {
757 let key = keys[i];
758 if (key.startsWith('[') && key.endsWith(']')) {
759 // 数组索引
760 path += key;
761 } else {
762 // 对象属性
763 path += '["' + key.replace(/"/g, '\\"') + '"]';
764 }
765 }
766 break;
767
768 case 'python':
769 path = 'data';
770 for (let i = 0; i < keys.length; i++) {
771 let key = keys[i];
772 if (key.startsWith('[') && key.endsWith(']')) {
773 // 数组索引
774 path += key;
775 } else {
776 // 对象属性
777 if (/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(key) && !/^(and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield)$/.test(key)) {
778 // 有效的标识符且不是关键字,可以使用点语法
779 path += '.' + key;
780 } else {
781 // 使用方括号语法
782 path += '["' + key.replace(/"/g, '\\"') + '"]';
783 }

Callers 2

_getJsonPathForElementFunction · 0.85
_updateJsonPathFunction · 0.85

Calls 1

_getLanguageRootFunction · 0.85

Tested by

no test coverage detected