Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将带“=”的字符串转换为JSON格式_Javascript_Json_Angular - Fatal编程技术网

Javascript 将带“=”的字符串转换为JSON格式

Javascript 将带“=”的字符串转换为JSON格式,javascript,json,angular,Javascript,Json,Angular,我正在尝试将从API收到的字符串转换为Angular中的JSON对象 问题是字符串没有被规范化,无法轻松解析为JSON 这是我正在使用的字符串: "{rootCause=EJBusinessException: This is a sample exception thrown for testing additional info field, description=This is a more detailed description about the incident., s

我正在尝试将从API收到的字符串转换为Angular中的JSON对象

问题是字符串没有被规范化,无法轻松解析为JSON

这是我正在使用的字符串:

"{rootCause=EJBusinessException: This is a sample exception thrown for testing additional info field, description=This is a more detailed description about the incident., stackTrace=com.springboot.streams.infrastructure.web.heartbeat.HeartbeatService.testServiceNow(HeartbeatService.java:200)}"
当尝试执行JSON.parsemyStr时,由于字符串格式无效,它会抛出一个错误

有没有一种简单的方法可以将列出的字符串转换为更正确的JSON格式,去掉“=”并替换为“:”

它不仅仅是.replace/[']+/g,因为即使如此,字符串还没有准备好转换为JSON


希望精通Javascript的人知道一个我不知道的诀窍。

您只需要在解析字符串之前对其进行操作,删除可能导致对象(如{和})出错的不必要字符串,并将其拆分,示例如下所示

var obj={},str={rootCause=EJBusinessException:这是为测试其他信息字段而引发的示例异常,description=这是关于事件的更详细描述,stackTrace=com.springboot.streams.infrastructure.web.heartbeat.HeartbeatService.testServiceNowHeartbeatService.java:200} str.split,.forEachst,i=>{ 配对=st.split= ifpair.length>1{ obj[对[0]。替换{,.replace},.trim]=对[1] }否则{ obj[i]=对 } }
logobj您只需在解析字符串之前对其进行操作,即可删除可能导致对象(如{和})出错的不必要字符串并将其拆分,示例如下所示

var obj={},str={rootCause=EJBusinessException:这是为测试其他信息字段而引发的示例异常,description=这是关于事件的更详细描述,stackTrace=com.springboot.streams.infrastructure.web.heartbeat.HeartbeatService.testServiceNowHeartbeatService.java:200} str.split,.forEachst,i=>{ 配对=st.split= ifpair.length>1{ obj[对[0]。替换{,.replace},.trim]=对[1] }否则{ obj[i]=对 } }
logobj正如评论员所发布的,除非您控制API或至少拥有输出将始终遵循特定格式的文档,否则您只能做有限的事情。但是,在当前的示例中,您可以删除多余的位以获得实际数据。。。删除大括号,逗号拆分,等于拆分,以获得键:值对。。。然后用数据从头开始构建一个javascript对象。。。如果此时需要json字符串,只需json.stringify即可

var initialString={rootCause=EJBusinessException:这是为测试其他信息字段而引发的示例异常,description=这是关于事件的更详细描述,stackTrace=com.springboot.streams.infrastructure.web.heartbeat.HeartbeatService.testServiceNowHeartbeatService.java:200} var trimmedString=initialString.substr1,initialString.length-2; var pairArray=trimmedString.split','; var objArray=[]; pairArray.forEachpair=>{ var elementArray=pair.split'='; var obj={ 关键字:elementArray[0]。修剪, 值:elementArray[1]。修剪 }; objArray.pushobj; }; var returnObj={}; objArray.forEachelement=>{ returnObj[element.key]=element.value; };
console.logJSON.stringifyreturnObj 正如评论员所说,除非您控制API或至少有文档表明输出将始终遵循特定的格式,否则您只能做有限的事情。但是,在当前的示例中,您可以删除多余的位以获得实际数据。。。删除大括号,逗号拆分,等于拆分,以获得键:值对。。。然后用数据从头开始构建一个javascript对象。。。如果此时需要json字符串,只需json.stringify即可

var initialString={rootCause=EJBusinessException:这是为测试其他信息字段而引发的示例异常,description=这是关于事件的更详细描述,stackTrace=com.springboot.streams.infrastructure.web.heartbeat.HeartbeatService.testServiceNowHeartbeatService.java:200} var trimmedString=initialString.substr1,initialString.length-2; var pairArray=trimmedString.split','; var objArray=[]; pairArray.forEachpair=>{ var elementArray=pair.split'='; var obj={ 关键字:elementArray[0]。修剪, 值:elementArray[1]。修剪 }; objArray.pushobj; }; var returnObj={}; objArray.forEachelement=>{ returnObj[element.key]=element.value; };
console.logJSON.stringifyreturnObj;修改API以确保响应始终是有效的JSON/XML要容易得多。。当您试图在JavaScriptIt中解析它时,会遇到很多棘手的情况,因为它是一个我无法控制的API,所以很遗憾,我无法修改它@LASTR2D2如果值部分中没有任何逗号,则有可能。删除大括号,在逗号上拆分,然后在first=上拆分以获得对,并重新组装为javascript对象。如果你真的需要JSONgood运气好的话。。。我和一些类似的资深大律师一起工作
enarios和我提出的任何解决方案在下一个极端情况下都会失败……修改API以确保响应始终是有效的JSON/XML要容易得多。。当您试图在JavaScriptIt中解析它时,会遇到很多棘手的情况,因为它是一个我无法控制的API,所以很遗憾,我无法修改它@LASTR2D2如果值部分中没有任何逗号,则有可能。删除大括号,在逗号上拆分,然后在first=上拆分以获得对,并重新组装为javascript对象。如果你真的需要JSONgood运气好的话。。。我曾处理过一些类似的场景,无论我想出什么解决方案,在下一个极端情况下都会失败。。。