in src/framework/MUtil.tsx [383:440]
jsonSchema2MFieldSchema: function (e: JSONSchema6, base: MFieldSchema = { name: "", type: "string" }, template: Partial<MFieldSchema> = {}): MFieldSchema {
switch (e.type) {
case 'string':
if (e.enum) {
base.type = "enum";
base.enumFields = base.enumFields ?? e.enum.map(v => ({ value: (v ?? "").toString() }))
} else {
base.type = "string"
base.max = e.maxLength
}
break;
case 'number':
case 'integer':
base.type = "int";
break;
case 'object':
base.type = "object"
base.objectFields = [];
base.uispec = {
type: "flowForm",
layout: MUtil.phoneLike() ? "vertical" : "horizontal",
comma: ":",
};
for (let key in e.properties) {
let jsmField = e.properties[key];
let m3Field: MFieldSchema = _.assign({}, template, { name: key, label: key, type: "object" });
if (!_.isBoolean(jsmField)) {
m3Field.label = jsmField.title ?? key;
this.jsonSchema2MFieldSchema(jsmField, m3Field, template);
base.objectFields.push(m3Field);
} else {
m3Field.type = "不支持的json schema:object.properties的value是boolean";
base.objectFields.push()
}
}
break;
case 'array':
base.type = "array"
base.arrayMember = { label: "", type: "array" };
if (_.isArray(e.items)) {
base.arrayMember.type = "不支持的json schema:array.items是数组";
} else if (_.isBoolean(e.items)) {
base.arrayMember.type = "不支持的json schema:array.items是boolean";
} else if (e.items) {
this.jsonSchema2MFieldSchema(e.items, base, template);
} else {
base.arrayMember.type = "不支持的json schema:array.items是undefined";
}
break;
case 'null':
case 'any':
case 'boolean':
default:
base.type = "不支持的json schema:array.items是" + e.type;
break;
}
return base;
},