You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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定义为数字的字段返回了字符串格式的数字),本地初始化时会被校验规则重置为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 01:15:02