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