亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 JSON 規范化為自定義模式

將 JSON 規范化為自定義模式

牛魔王的故事 2023-02-24 15:51:32
我有一組具有以下格式的對象var arr = [    {        "productId": "123456",        "productName": "Test Product 1",        "description": [            "This is delicious",            "Suitable for vegetarian"        ],        "attributes": {            "internalId": "091283"            "category": "Dairy"        },        "order": 1    }];我正在嘗試映射到類似下面的內容[    [{        {            "name": "productId",            "value": "123456"        },        {            "name": "productName",            "value": "Test Product 1"        },        {            "name": "description",            "value": ["This is delicious", "Suitable for vegetarian"]        },        {            "name": "attributes",            "value": {                {                    "name": "internalId",                    "value": "091283"                },                {                    "name": "category",                    "value": "Dairy"                }            }        },        {            "name": "order",            "value": 1        }    }]]在繼續之前,我嘗試映射簡單的屬性,但現在堅持只獲取循環中每個對象的最后一個屬性。假設我不知道傳入數據的格式是什么以及如何將 JSON 對象規范化為我想要的格式?normalizeJson = (array) => {        for(i = 0; i < array.length; i++){            normalizedJson[i] = {};            Object.keys(array[i]).forEach(key => {                if (array[i][key] && typeof array[i][key] === "object") {                    // normalizeJson(obj[key]);                    // console.log(key + ' is object');                    return;                } else {                    o = {};                    o["name"] = key;                    o["value"] = array[i][key];                    normalizedJson[i] = o;                    // normalizedJson[i]["name"] = key;                    // normalizedJson[i].value = array[i][key];                    // console.log(key);                    return;                }            });        }          console.log(normalizedJson);    };或者有沒有我可以使用的圖書館來實現這個目標?
查看完整描述

1 回答

?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

嘗試這個


var obj = [

  {

    productId: "123456",

    productName: "Test Product 1",

    description: ["This is delicious", "Suitable for vegetarian"],

    attributes: {

      internalId: "091283",

      category: "Dairy",

    },

    order: 1,

  },

];


function normalizeObject(obj) {

  var result = [];

  if (Array.isArray(obj)) {

    for (let i of obj) {

      result.push(normalizeObject(i));

    }

  } else if (typeof obj == "object") {

    for (let i of Object.keys(obj)) {

      result.push({ name: i, value: normalizeObject(obj[i]) });

    }

  } else {

    return obj;

  }

  return result;

}


console.log(JSON.stringify(normalizeObject(obj), null, 2));

這種循環方法稱為遞歸。這是通過調用函數本身來循環的。



查看完整回答
反對 回復 2023-02-24
  • 1 回答
  • 0 關注
  • 96 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號