将单个字符串对象转换为数组(或常规对象)

convert single string object to array (or regular object)

提问人:yoni chanowitz 提问时间:8/11/2023 最后编辑:Chris Barryoni chanowitz 更新时间:8/11/2023 访问量:56

问:

我有一个 POST 请求正文作为发送

{'{"thingy":"stuff","otherThing":"moreStuff","notAnActualKey":':{'"random"':''}}

(以上不是实际数据,但括号、逗号、括号、引号等与我的数据返回方式完全相同)

数据来自SalesForce Apex,我无法更改其发送方式

我有一个用 TypeScript 编写的程序来使用数据。

我需要将数据转换为数组。

当我在它上运行它时,它会返回,但是当我使用它或使用它时,我收到错误typeof()objectkeys()values()

TypeError: requestBody.keys is not a function

TypeError: requestBody.values is not a function

我以为它仍然是JSON,但是当我使用它时,我收到错误JSON.parse(requestBody)

Unexpected token o in JSON at position 1

这意味着它已经是一个对象

我不明白这是什么。我怎样才能将数据从中转换为数组?

JavaScript JSON 字符串 对象

评论

3赞 Roko C. Buljan 8/11/2023
那个 SalesForce 无论输出什么,都会在损坏的数据上发臭。无论如何。 是无效的 JSON。阅读更多: json.org/json-en.html 你要么在解释时犯了一个巨大的错误,为我们简化了那个字符串(?),要么真的出了什么问题。{'
1赞 Chris Barr 8/11/2023
因此,有一个 JSON 对象,其键是包含更多 JSON 数据的字符串? 是对象中的键吗?JSON 中不允许使用单引号,因此无论如何都会中断。'{"thingy":"stuff","otherThing":"moreStuff","notAnActualKey":'
1赞 Andrei Khotko 8/11/2023
你试过 Object.keys(requestBody) 和 Object.values(requestBody) 吗?
1赞 Artem 8/11/2023
和 是 上定义的静态方法,例如:keysvaluesObjectObject.keys({'{"thingy":"stuff","otherThing":"moreStuff","notAnActualKey":':{'"random"':''}})
0赞 twalow 8/12/2023
Object.prototype.toString.call(requestBody)能得到什么?

答:

0赞 Mister Jojo 8/11/2023 #1

你可以像这样尝试sometihng:

let str = `{'{"thingy":"stuff","otherThing":"moreStuff","notAnActualKey":':{'"random"':''}}`;

let jsObjRealstr = str.replaceAll(`''`,`""`)
                      .replaceAll(`'`,``)
                      .replaceAll(`::`,`:`)
                      .replace(`{{`,`{`);
                      
console.log( JSON.parse(jsObjRealstr ) );