[英]JSON.parse() returns a string instead of object
即使在同一主題上已經提出了許多問題,我也不想提出一個新問題,但我真的不知道為什么這不起作用。
我正在嘗試使用以下代碼創建一個 JSON 對象:
var p = JSON.stringify(decodeJSON('{{post.as_json}}'))
var post = JSON.parse(p);
console.log(post); // Debug log to test if code is valid
以及decodeJSON
函數:
function decodeJSON(json) {
var txt = document.createElement("textarea");
txt.innerHTML = json;
return txt.value.replace(/u'/g, "'");
}
console.log(post)
返回以下 JSON 字符串:
{'content': 'kj fasf', 'uid': '4eL1BQ__', 'created': '07/09/2017', 'replies': [], 'tags': ['python'], 'by': {'username': 'Dorian', 'img_url': '/static/imgs/user_Dorian/beaut.jpg'}, 'likes': 0}
掃描字符串后,我非常確定 JSON 是有效的,並且沒有語法錯誤。 但是,當運行JSON.parse(p)
而不是接收對象時,我會返回一個字符串。 可能是什么原因?
這是因為decodeJSON
返回一個字符串,而JSON.stringify
將該字符串轉換為另一個string 。
另一方面,您在字符串上使用了JSON.strigify()
方法。 您應該字符串化一個對象,而不是字符串。
JSON.stringify() 將 javascript 對象轉換為 json 文本並將其存儲在字符串中。
當您使用JSON.parse
您獲得的是由decodedJSON
函數返回的字符串,而不是對象。
解決方案:
var p = JSON.stringify('{{post.as_json}}');
var post = JSON.parse(p);
console.log(post);
它給了我 Uncaught SyntaxError: Unexpected token ' in JSON at position 1
解決方案是修改您的decodeJSON
方法。
function decodeJSON(json) {
var txt = document.createElement("textarea");
txt.innerHTML = json;
return txt.value.replace(/u'/g, '\"');
}
var p = decodeJSON('{{post.as_json}}');
var post = JSON.parse(p);
console.log(post);
您的代碼中的問題是您正在對字符串本身執行JSON.stringify
。 所以在解析這個字符串的結果將是一個字符串。 實際上,您已字符串化兩次並解析一次。 如果您再次解析它,您將獲得一個 JSON。 但是對於解決方案,請避免兩次字符串化。
替換您的代碼。
var p = decodeJSON('{{post.as_json}}');
那可行
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.