javascript 使用模式模板将输入JSON对象转换为所需的模式。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 使用模式模板将输入JSON对象转换为所需的模式。相关的知识,希望对你有一定的参考价值。

/**
 * Translate input JSON object to required schema using a schema template.
 * 
 * Input can be any valid JSON object. Schema must have the same keys ad
 * the input object - absent keys will be silently ignored.
 * Schema values must be (Type)newKeyName, there are 4 supported types
 * String, Number, Boolean, Array (Array will join all values with the same
 * newKey name but will leave item type as it was)
 * eg.:
 * 
 * inputData = {
 *  "key1": "product",
 *  "key2": "lorem ipsum dolor sit amet",
 *  "key3": "nice",
 *  "key4": "great",
 *  "key5": "500",
 *  "key6": "0"
 * }
 * 
 * schema = {
 *  "key1": "(String)name",
 *  "key2": "(String)description",
 *  "key3": "(Array)reviews",
 *  "key4": "(Array)reviews",
 *  "key5": "(Number)price",
 *  "key6": "(Boolean)show"
 * }
 * 
 * outputData = {
 *  name: "product",
 *  description : "lorem ipsum dolor sit amet",
 *  reviews: ["nice", "great"],
 *  price: 500,
 *  show: false
 * }
 * 
 */
export const translateToSchema = (data, schema) => {
  let obj = {};
  Object.entries(data).forEach(([key, value]) => {
    let schemakey = schema[key];
    // ignore current pair if not defined in schema
    if (typeof schemakey === 'undefined') return;

    schemakey = schemakey.substr(1).split(')');
    type = schemakey[0];
    name = schemakey[1];

    switch (type) {
      case "Boolean":
        obj[name] = Boolean(value);
        break;
      case "Number":
        obj[name] = Number(value);
        break;
      case "String":
        obj[name] = String(value);
        break;
      case "Array":
        if (typeof obj[name] === 'undefined') {
          obj[name] = [value];
        } else {
          obj[name].push(value);
        }
        break;

      default:
        console.error('unsupported type');
        break;
    }
  });
  return obj;
};

以上是关于javascript 使用模式模板将输入JSON对象转换为所需的模式。的主要内容,如果未能解决你的问题,请参考以下文章

将 Django 模板中的 JSON 传递给独立的 Javascript 文件

JavaScript 使用 Jinja 模板中呈现的数据引发 SyntaxError

从 json 动态创建的 Javascript 表单输入,需要将对象映射到另一个对象的正确字段并保存

将 JSON 数组从 Django 视图返回到模板

如何将输入/选择值从网站保存到 XML/JSON 文件并使用 JavaScript 自动加载再次填充它们

如何将 django 变量正确转换为模板中的 json