[英]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.