一个字符串对象如何转为指定的字符串

//后端给了一个中文的key value很头疼,请问如何转换呢
"{"种类":"黑丝","价格":"100"}" => "黑丝,100"
阅读 3k
7 个回答
let values = [];

JSON.parse('{"种类":"黑丝","价格":"100"}', (k, v) => {
    k && values.push(v);
});
values.join(',');

也可以通过正则:

const matches = '{"种类":"黑丝","价格":"100"}'.matchAll(/(?<=:")[^"]+/g);

for (let match of matches) {
    console.log(match);
    // ["黑丝", index: 7, input: "{"种类":"黑丝","价格":"100"}", groups: undefined]
    // ["100", index: 17, input: "{"种类":"黑丝","价格":"100"}", groups: undefined]
}

如果能保证字段有序:

Object.values(JSON.parse('{"种类":"黑丝","价格":"100"}')).join(',')

否则转换对象后再额外处理。

当然,也可以通过匹配,如:

'{"种类":"黑丝","价格":"100"}'.replace(/"|\{|\}/g, '').split(',').map(item => item.split(':')[1]).join(',')

Object.values(obj).join(",")

如果固定是这种格式的话

const str = '{"种类":"物品名","价格":"100"}';
const obj = JSON.parse(str);
console.log(`${obj.种类},${obj.价格}`); // 物品名,100
// => 黑丝,100 | 南瓜,60 | 香蕉,99.99
demo('{"种类":"黑丝","价格":"100", "种类":"南瓜","价格":"60",  "种类":"香蕉","价格":"99.99"}')

function demo (str) {
  var res = '', dot;
  str.replace(/"种类":.*?"(.*?)".*?"价格":.*?"(.*?)"/g, function (_, name, price) {
    dot = res ? ' | ' : ''
    res += dot + name + ',' + price
  })
  return res;
}

数据后端给的格式和需求的格式之间必须存在转换规则,否则没有办法很好的转换。
从前面看,规则是可以明确的。
你还想给出更多数据,或者和后端协调如何转换最好,在这里问,意义不是太大啦。

let str = '{"种类":"黑丝","价格":"100"}'
let obj = JSON.parse(str)
let arr = []
for(let i in obj) {
    arr.push(obj[i])
}
console.log(arr.join(','))
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题