使用stringify使用大写字符串化一个JSON对象,并替换[duplicate]

问题描述 投票:0回答:2

这个问题在这里已有答案:

我必须完成这个函数,我怎么能用大写的相应名称替换属性的名称。

function stringify(v){

  function replacer(k,v){
    // to be completed
  }

  return JSON.stringify(v,replacer)
}

console.log(stringify(JSON.parse(process.argv[2])))

例如,命令:

节点json_upper_case.js'[{“city”:“Milano”,“Air Quality”:“red”,“Temperature”:10},{“air quality”:“yellow”,“Temperature”:20,“sea conditions” “3,” 城市 “:” 热那亚“}]”

预计将打印以下输出:

[{“CITY”:“Milano”,“AIR QUALITY”:“red”,“TEMPERATURE”:10},{“AIR QUALITY”:“yellow”,“TEMPERATURE”:20,“SEA CONDITIONS”:3,“ CITY “:” 热那亚“}]

javascript json function replace stringify
2个回答
0
投票

一个简单的Array.prototype.map()以及一些动态属性名称访问可以完成这项工作:

let json = `[{
  "city": "Milano",
  "Air Quality": "red",
  "Temperature": 10
}, {
  "air quality": "yellow",
  "Temperature": 20,
  "Sea conditions": 3,
  "City": "Genova"
}]`

function keysToUppercase(j) {
  if (typeof j === 'string') { // so it works for javascript arrays as well
    try {
      j = JSON.parse(j);
    } catch (err) {
      console.error('Invalid JSON input');
      console.error(err);
    }
  }
  j = j.map(x => {
    for (let prop in x) {
      x[prop.toUpperCase()] = x[prop];
      delete x[prop];
    }
    return x;
  })
  return j;
}

console.log(keysToUppercase(json));

-1
投票

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#The_replacer_parameter显示几乎正确的答案,尝试修改给定的功能以满足您的需求:

function replacer(key, value) {
  // Filtering out properties
  if (typeof value === 'string') {
    return undefined;
  }
  return value;
}
© www.soinside.com 2019 - 2024. All rights reserved.