对象里面有个数组,把数组里面的每一个对象修改为这样的格式

本来的数据格式

cguid: "c4571e06-dc50-4780-b663-9d3d358f4888",
content: [
{className: "纸质用品",
 suppliesName: "物品名称1",
 specification: "品牌规格1",
 unit: "1", 
 remark: ""}
],
orderNum: "1",
type: 1,

修改后的数据格式

cguid: "c4571e06-dc50-4780-b663-9d3d358f4888",
content: [
{\"classId\":\"1001\",
\"className\":\"纸质用品\",
\"suppliesName\":\"复印纸4444\",
\"suppliesId\":\"2001\",
\"specification\":\"易世达A3\",
\"unit\":\"包\",
\"quantity\":5,
\"remark\":\"备注信息\"
}
],
orderNum: "1",
type: 1,

需要怎么处理,求大佬指教一下谢谢

阅读 2.8k
4 个回答

没有这种格式。检查一下问题~

// 说出你的需求可能有更好的解决方式

let arr = [{ className: '纸质用品', suppliesName: '物品名称1', specification: '品牌规格1', unit: '1', remark: '' }]

function objFormate(arr, formate) {
    return arr.map(item => {
        return Object.keys(item).reduce((newItem, key) => {
            newItem[formate + key + formate] = formate + item[key] + formate
            return newItem
        }, {})
    })
}

console.log(objFormate(arr, '\\'))

/* [ { '\\className\\': '\\纸质用品\\',
    '\\suppliesName\\': '\\物品名称1\\',
    '\\specification\\': '\\品牌规格1\\',
    '\\unit\\': '\\1\\',
    '\\remark\\': '\\\\' } ] */

不知道你出于什么目的需要转换成这种格式,反正我建议你改用标准 JSON 代替,要不然生成和解析都需要写大量代码,而且容易出错

数组里的每一个对象,应该是被处理成 JSON 了,你可以试试

data.content = data.content.map(m => JSON.stringify(m));

下次提问题的时候,麻烦把自己的代码格式弄对一点,你这代码里面,各种中文逗号。

const data = {
  cguid: "c4571e06-dc50-4780-b663-9d3d358f4888",
  content: [
    {
      className: "纸质用品",
      suppliesName: "物品名称1",
      specification: "品牌规格1",
      unit: "1",
      remark: ""
    }
  ],
  orderNum: "1",
  type: 1
}

之后,如果要转换成你要的格式,你可以直接把 content 里面的每一个对象都由对象转成字符串:

data.content = data.content.map(item => JSON.stringify(item))

转换之后,当你再去提交给后端或者将整个 data 转成字符串时,就会得到你想要的格式:

const dataString = JSON.stringify(data, null, 2);

// 输出:
// {
//   "cguid": "c4571e06-dc50-4780-b663-9d3d358f4888",
//   "content": [
//     "{\"className\":\"纸质用品\",\"suppliesName\":\"物品名称1\",\"specification\":\"品牌规格1\",\"unit\":\"1\",\"remark\":\"\"}"
//   ],
//   "orderNum": "1",
//   "type": 1
// }

\ 这个符号的出现是因为 " 双绰号在JSON中是有特殊意义的,它表示字符串,但是如果它本身就是字符串的内容的一部分的时候,就需要转义,使用 \" 表示一个双引号。

之后如果别人回传给你的数据也是这样的话,你就需要重新将数据转成对象:

data.content = data.content.map(item => JSON.parse(item))
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题