为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 JSON 对象添加到 API 调用

如何将 JSON 对象添加到 API 调用

千万里不及你 2022-06-09 10:34:13
我在一个动态创建的数组中有 x 个对象。我想通过 API 发送来单独保存这些对象。问题是可以有 x 个对象。编写一个循环来读取属性名称及其属性值并点击 api,然后读取第二个属性及其值并点击 api 的最佳方法是什么。所以基本上一次api只会保存一个对象。IE{        "attributeName": "s1",        "attributeValues": [          "a",          "b"        ]      }我的 JSON 对象如下所示:[  {    "attributeName": "s1",    "attributeValues": [      "a",      "b"    ]  },  {    "attributeName": "s2",    "attributeValues": [      "c",      "d"    ]  },  {    "attributeName": "d1",    "attributeValues": [      "p",      "q"    ]  },  {    "attributeName": "d2",    "attributeValues": [      "r",      "s"    ]  },  {    "attributeName": "",    "attributeValues": [      ""    ]  },  {    "attributeName": "d2",    "attributeValues": [      "r",      "s"    ]  }]我想选择属性名称及其值,然后将其发送到 API。或者说,我将整个 JSON 保存到 API,那么如果我事先不知道属性名称,我该如何过滤掉单个对象。还有什么其他方法可以获取属性名称列表。
查看完整描述

2 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

如果你想要以下格式的 json


[

  {'s1':['a','b']},

  {'s2':['c','d']},

  {'d1':['p','q']},

  {'d2':['r','s']},

  {'':['']},

  {'d2':['r','s']}

]

然后你可以对单个孩子进行 api 调用,或者发送整个数组。


var arr = [

  {

    "attributeName": "s1",

    "attributeValues": [

      "a",

      "b"

    ]

  },

  {

    "attributeName": "s2",

    "attributeValues": [

      "c",

      "d"

    ]

  },

  {

    "attributeName": "d1",

    "attributeValues": [

      "p",

      "q"

    ]

  },

  {

    "attributeName": "d2",

    "attributeValues": [

      "r",

      "s"

    ]

  },

  {

    "attributeName": "",

    "attributeValues": [

      ""

    ]

  },

  {

    "attributeName": "d2",

    "attributeValues": [

      "r",

      "s"

    ]

  }

];


var obj = arr.map((o1) => {

  var o = {};

  o[o1.attributeName] = o1.attributeValues;

  return o;

});


console.log(JSON.stringify(obj));


查看完整回答
反对 回复 2022-06-09
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

检查数据的频率。如果 FrontEnd 上的数据太多,那么最好在块中发送。否则可以在 FE 上积累,然后发送。


async function sendAll(data) {

  let results = [];

  for (let index = 0; index < data.length; index++) {

    const result = await axios.post('url', data[index].attributeValues);

    results.push(result);

  }

}

带有假模拟 api 的示例。


// function* dataLake(data) {

//   for (let item of data) yield item;

// }

const getDataFake = data => {

  return new Promise(r => {

    setTimeout(() => {

      r(data);

    }, 100);

  });

};


async function sendAll(data) {

  let results = [];

  for (let index = 0; index < data.length; index++) {

    const result = await getDataFake(data[index].attributeValues);

    results.push(result);

  }

  return results;

}


const data = [

  {

    attributeName: "s1",

    attributeValues: ["a", "b"]

  },

  {

    attributeName: "s2",

    attributeValues: ["c", "d"]

  },

  {

    attributeName: "d1",

    attributeValues: ["p", "q"]

  },

  {

    attributeName: "d2",

    attributeValues: ["r", "s"]

  },

  {

    attributeName: "",

    attributeValues: [""]

  },

  {

    attributeName: "d2",

    attributeValues: ["r", "s"]

  }

];

sendAll(data).then(console.log)


查看完整回答
反对 回复 2022-06-09
  • 2 回答
  • 0 关注
  • 161 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信