需要使用JavaScript将JSON格式转换为其他JSON格式

需要使用JavaScript将JSON格式转换为其他JSON格式,javascript,arrays,json,object,Javascript,Arrays,Json,Object,需要使用javascript将以下请求格式转换为输出格式 请求: { "patientId": "1234", "patientName": "Sai", "patientFname": "Kumar", "patientLname": "Gadi", "city": "", "zipcode":null, "state":" " } 需要按以下格式转换,但我们需要检查元素的object keyvalue不应为null或“”(无空格)或“”(不为空),然后只需按以

需要使用javascript将以下请求格式转换为输出格式

请求:

{
  "patientId": "1234",
  "patientName": "Sai",
  "patientFname": "Kumar",
  "patientLname": "Gadi",
  "city": "",
  "zipcode":null,
  "state":" "

}
需要按以下格式转换,但我们需要检查元素的object keyvalue不应为null或“”(无空格)或“”(不为空),然后只需按以下格式打印对象名称及其值:

输出:

[
 {
  "propertyName": "patientId",
  "propertyValue": "1234"
 },
 {
   "propertyName": "patientName",
   "propertyValue": "Sai"
 },
 {
  "propertyName": "patientFname",
  "propertyValue": "Kumar"
  },
  {
   "propertyName": "patientLname",
    "propertyValue": "Gadi"
   }
]

提前感谢。

对象上使用
映射
过滤器
。条目

const数据={
“patientId”:“1234”,
“patientName”:“Sai”,
“PatientName”:“Kumar”,
“患者姓名”:“Gadi”,
“城市”:“,
“zipcode”:空,
“状态”:”
};
const newData=Object.entries(data).filter(([,v])=>![undefined,null,“]”。包括(typeof v==“string”?v.trim():v)).map(([key,value])=>({
propertyName:key,
propertyValue:值
}));
console.log(newData)

.as控制台包装{max height:100%!important;top:auto;}
以下是一种简单的方法:

const obj = {
  "patientId": "1234",
  "patientName": "Sai",
  "patientFname": "Kumar",
  "patientLname": "Gadi",
  "city": "",
  "zipcode":null,
  "state":" "
};
const newArr = [];

for (let key in obj) {
  if (obj[key] && obj[key].trim()) {
    newArr.push({
      propertyName: key,
      propertyValue: obj[key]
    });
  }
}

console.log(newArr);

首先,遍历对象的可枚举属性。在每次迭代中,检查值是否为null或空格。如果有一个合适的值,它会将新对象推送到结果数组。

您可以使用
object.entries
reduce

让obj={
“patientId”:“1234”,
“patientName”:“Sai”,
“PatientName”:“Kumar”,
“患者姓名”:“Gadi”,
“城市”:“,
“zipcode”:空,
“状态”:”
}
让op=Object.entries(obj).reduce((op[key,value])=>{
如果((值| |“”).trim()){
op.push({
“propertyName”:键,
“propertyValue”:值
})
}
返回操作
},[])
console.log(op)
在这里是合适的。这样,您就不必连续调用
Array
函数,只需在数组中循环多次(即:
Array.map()
+
Array.filter()

让obj={
“patientId”:“1234”,
“patientName”:“Sai”,
“PatientName”:“Kumar”,
“患者姓名”:“Gadi”,
“城市”:“,
“zipcode”:空,
“状态”:”
};
让res=Object.entries(obj).reduce((acc[key,value])=>{
如果(![undefined,null,'')。包括(typeof value==='string'?value.trim():''){
加速推({
propertyName:key,
propertyValue:值
});
}
返回acc;
}, []);

控制台日志(res)这很好。在这种情况下,这可能不是问题,但在其他情况下可能是问题-这将过滤掉数字
0
。哇@MarkMeyer-我会马上解决它。@MarkMeyer我已经解决了这个问题,还有更好的吗?哦,是的@Shidersz,那会更容易-我会这样做。是的,看起来不错。不知道为什么有人会过滤掉向下投票的需要。您好,非常感谢您提供的解决方案。但是,当我们发送“state”:“”(带空格)时,if条件没有得到执行。嘿,为了正确起见,如果只有空格,我应该将对象返回到数组中吗?这是因为
obj[key].trim()
状态:''中删除空格,并将其视为状态:''。因此,if条件也会检查这一点。