Javascript 在JSON响应中将字符串true/false转换为布尔值

Javascript 在JSON响应中将字符串true/false转换为布尔值,javascript,Javascript,我有一个场景,JSON响应中的许多字段都是字符串true/false 现在我需要通过Javascript一次性替换从字符串到布尔值的所有值 样本: { field1: "true", field2: "false" } 预期: { field1: true, field2: false } 这是一个样本。我的JSON响应非常大,有很多对象和数组。这里有一个很好的递归convertBools函数: 函数转换boolsobj{ const newObj={};

我有一个场景,JSON响应中的许多字段都是字符串true/false

现在我需要通过Javascript一次性替换从字符串到布尔值的所有值

样本:

{
    field1: "true",
    field2: "false"
}
预期:

{
    field1: true,
    field2: false
}
这是一个样本。我的JSON响应非常大,有很多对象和数组。

这里有一个很好的递归convertBools函数:

函数转换boolsobj{ const newObj={}; 如果对象的类型!=“对象”{ 返回obj; } 用于obj中的常量道具{ 如果!obj.hasOwnPropertyprop{ 持续 } if Array.isArrayobj[prop]{ newObj[prop]=obj[prop].mapval=>convertBoolsval; }如果obj[prop]==真,则为else{ newObj[prop]=真; }如果obj[prop]==false,则为else{ newObj[prop]=false; }否则{ newObj[prop]=convertBoolsobj[prop]; } } 返回newObj; } //以下是一些例子: 常数obj1={ 字段1:是的, 字段2:错误 }; 常数obj2={ 字段1:是的, 字段2:asdf, 字段3:错误, 字段4:{ 是的, 字段4b:asdf, 字段4c:[a,{array1:true},c], } } const ret1=convertBoolsobj1; console.logret1; const ret2=convertBoolsobj2; console.logret2 可用于排除或修改值:

var j='{field1:true,field2:false}'; var o=JSON.parsej,k,v=>v==true?真:v==假?假:v ;;
控制台标志 你也可以试试这样的东西

设obj={ 字段1:是的, 字段2:错误, 字段3:布尔值以外的其他值 }; 对于obj中的let prop{ 如果obj.hasOwnPropertyprop{ obj[prop]=obj[prop]=“真”| | obj[prop]=“假”?obj[prop]=“真”:obj[prop]; } }
console.logobj 我的版本,不修改源对象,返回带有解析布尔值的新对象:

常量对象={ 测试:对, 测试1:错误, 测试2:错误, 测试3:5, } console.logparseBooleansInObjobject; 函数parseBooleansInObjobject{ const newObject={…object}; Object.keysnewObject .forEachobjKey=>{ let value=newObject[objKey]; value=value=='true'?true:value=='false'?false:value; newObject[objKey]=值; }; 返回newObject;
}请发布您的尝试。您是否可以控制生成JSON响应?如果是这样的话,就修正你的回答。JSON支持布尔值。为什么不用呢?无论如何,您可以使用JSON.parse将false转换为false,将true转换为true。方法也可能有帮助。@Xufox的可能副本否,这是一个有效的对象,而不是字符串。网站上没有完全相同的问题,但上面提到的主题是如何将对象字段转换为布尔值,@正如他在最初的问题中所说,我的JSON响应非常大,包含许多对象和数组。。这个答案并不满足于此。我不知道复活器的功能。这是一个非常酷的替代方案,可以递归地工作!。