簡體   English   中英

如何將字符串化的Surveyjs類JSON對象轉換為實際的JSON

[英]How to convert stringified surveyjs JSON-like object into actual JSON

我正在開發一個使用調查構建庫surveyjs的應用程序。 我正在構建一個工具,用戶可以在該工具中將來自該網站的調查JSON輸入表單,然后通過觸發AWS Lambda函數的ajax請求以字符串形式發送。 lambda函數接受ajax請求,並使用mongoose將其調查插入MongoDB實例中。

當字符串進入lambda函數時,它看起來像這樣:

"{ pages: [ { name: 'page1', elements: [ { type: 'radiogroup', name: 'question1', title: 'IS THIS A SURVEY?', choices: [ { value: 'item1', text: 'Yes' }, { value: 'item2', text: 'No' } ] } ] } ]}"

當我嘗試解析該字符串時,出現以下錯誤:

Error: JSON Parse error: Expected '}'

我認為這可能與JSON鍵不是字符串有關。 我還讀到我使用單引號可能是問題所在,但是我已經用盡了我的知識庫。

總體而言,我的問題是:如何將字符串轉換為JSON對象?

謝謝!

JSON字符串需要將其字符串屬性和值用雙引號引起來。 使用正則表達式並replace

 const originalStr = "{ pages: [ { name: 'page1', elements: [ { type: 'radiogroup', name: 'question1', title: 'IS THIS A SURVEY?', choices: [ { value: 'item1', text: 'Yes' }, { value: 'item2', text: 'No' } ] } ] } ]}"; const finalStr = originalStr .replace(/'/g, '"') .replace(/(\\w+):/g, '"$1":'); console.log(JSON.parse(finalStr).pages); 

也就是說,如果可能的話, 最好首先修復所有可提供結果的內容。

如果您的lambda函數是使用JavaScript編寫的,則可以使用eval解析格式錯誤的JSON,但是eval字符串在當前上下文中被評估為實際的javascript,因此要獲得結果,您必須在字符串中設置一個變量。 例:

var malformedJsonString = "{unquotedName: 'single quoted value'}";
eval("var myParsedJsonObject = "+malformedJsonString+";");
// myParsedJsonObject now contains your parsed JSON object

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM