需要使用JavaScript将JSON格式转换为其他JSON格式
需要使用javascript将以下请求格式转换为输出格式 请求:需要使用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或“”(无空格)或“”(不为空),然后只需按以
{
"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条件也会检查这一点。