json-editor设置startVal初始值不生效 初始化异常问题求助
json-editor初始化startVal不生效问题
我正在使用json-editor组件,多次查阅完整文档和示例后,仍无法让编辑器正确识别我设置的初始值(startVal)。编辑器可以基于我提供的schema正常创建,但并未使用我传入的初始对象完成初始化。以下是我的代码:
$.get("/AppAdmin/GetWorkflowEditSchema", {}, function (schemaResponse) { if (schemaResponse) { var editSchema = JSON.parse(schemaResponse); $.get("/AppAdmin/GetWorkflow?workflowName=" + workflowToEdit, {}, function (workflowResponse) { if (workflowResponse) { var workflow = JSON.parse(workflowResponse); const holder = document.getElementById("workflowEditorHolder"); var options = { "schema": editSchema, "startVal": workflow, "theme": "bootstrap4" }; jsonEditor = new JSONEditor(holder, options); } else { toastr.error("The workflow could not be loaded to edit."); } }); } else { toastr.error("Reading edit schema failed."); } });
两个服务端返回的都是正确的JSON字符串。我将schema和初始对象复制粘贴到json-editor的在线演示站点测试时,编辑器可以正确加载初始值。因此我怀疑是我的代码中对象处理存在问题,我对JSON相关操作不太熟悉,出现这类问题也不足为奇。
我的schema如下:
我用来初始化编辑器的对象如下:
请问我的操作哪里存在问题?感谢各位的帮助。
排查解决步骤
- 校验字段类型匹配:解析完schema和初始值后,分别打印两个对象的内容和字段类型,确认初始值的每个字段类型都和schema定义完全匹配。如果存在类型不匹配(比如schema定义为数字的字段返回了字符串格式的数字),本地初始化时会被校验规则重置为schema默认值,在线演示站点通常默认关闭严格校验所以不会触发该问题。
- 调整初始化时机:确认
workflowEditorHolderDOM节点在初始化编辑器时已经完成挂载,可以将初始化逻辑包裹在$(document).ready()中,避免节点未加载完成导致的初始化异常。 - 手动调用setValue方法兜底:监听编辑器的ready事件,在初始化完成后手动赋值,修改后的代码如下:
jsonEditor = new JSONEditor(holder, options); // 等待编辑器初始化完成后手动赋值 jsonEditor.on('ready', () => { jsonEditor.setValue(workflow); });
- 核对组件版本:确认本地引入的json-editor版本和在线演示站点版本一致,部分旧版本的startVal参数存在已知的初始化bug,升级到最新稳定版即可解决。
内容的提问来源于stack exchange,提问作者Java Jive
相关产品推荐
相关产品推荐

