为什么 JSON.parse(str) 变成字符串?
Why does JSON.parse(str) into String?
我尝试使用 JSON.parse();
将字符串解析为 JavaScript 对象,但是当我调用 console.log(object.constructor.name);
之后,它给了我 "String".
我尝试使用 parse
两次而不是一次,但它给了我一个错误。
var userInput = document.getElementById("userInput");
var yes = document.getElementById("yes");
var no = document.getElementById("no");
var dataString = "";
const endpoint = 'https://www.jsonstore.io/4037b406bb44de85c5dd50eb1a6472bedb79f447e747412695637c2784cbe43f';
function writeToDatabase(arr) {
alert(arr);
(async function() {
// Send a post request, saving some data
post_response = await fetch(endpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(arr)
});
/*
// console.log the result
console.log(`POST response:`, await post_response.json())
*/
})();
}
function readFromDatabase() {
fetch(endpoint)
.then(response => response.json())
.then(data => {
console.log(data);
dataArr = data;
console.log(dataArr);
});
}
yes.onclick = function() {
fetch(endpoint)
.then(response => response.json())
.then(data => {
data = JSON.stringify(data);
console.log("full data: " + data);
data = JSON.parse(data);
data = data['result'];
data = JSON.stringify(data);
console.log("result array only: " + data);
data = JSON.parse(data);// object.contructor.name
console.log("after parse: " + data);
console.log("data type is: " + data.constructor.name);
data[userInput.value] = "YES";
console.log("final string to write to database: " + data);
writeToDatabase(data);
});
}
no.onclick = function() {
dataString = "{"+userInput.value+": "+"NO"+"}"
writeToDatabase(dataString);
}
我希望它能转换成一个 Javascript 对象,这样我就可以添加一个项目,但它仍然是一个字符串,所以我无法添加一个项目。
代码:https://repl.it/@ErichBuelow/JsonStore-using-JS
视图:https://jsonstore-using-js--erichbuelow.repl.co/
这是 URL 处的数据:
{"result":"{test: NO}","ok":true}
response.json()
然后将其转换为具有两个属性(result
(字符串)和 ok
(布尔值)的 JavaScript 对象。
data = JSON.stringify(data)
将其转换回 JSON,反转 response.json()
.
的效果
data = JSON.parse(data);
再次反转它给你更多上述对象。
data = data['result'];
提取 result
属性,为您提供字符串 "{test: NO}"
.
data = JSON.stringify(data);
为您提供该字符串的 JSON 表示。
data = JSON.parse(data);
反转,再次给你字符串。
I tried using parse twice rather than once, but then it gave me an error.
不清楚您在哪里尝试过,但是如果您尝试解析 {test: NO}
那么它会出错,因为该字符串无效 JSON。 { "test": "NO" }
将有效 JSON,但引号丢失。
将 JSON 的字符串嵌入到 JSON 中是很愚蠢的。将原来的JSON表达为:
会更好
{
"result": {
"test": "NO"
},
"ok": true
}
我尝试使用 JSON.parse();
将字符串解析为 JavaScript 对象,但是当我调用 console.log(object.constructor.name);
之后,它给了我 "String".
我尝试使用 parse
两次而不是一次,但它给了我一个错误。
var userInput = document.getElementById("userInput");
var yes = document.getElementById("yes");
var no = document.getElementById("no");
var dataString = "";
const endpoint = 'https://www.jsonstore.io/4037b406bb44de85c5dd50eb1a6472bedb79f447e747412695637c2784cbe43f';
function writeToDatabase(arr) {
alert(arr);
(async function() {
// Send a post request, saving some data
post_response = await fetch(endpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(arr)
});
/*
// console.log the result
console.log(`POST response:`, await post_response.json())
*/
})();
}
function readFromDatabase() {
fetch(endpoint)
.then(response => response.json())
.then(data => {
console.log(data);
dataArr = data;
console.log(dataArr);
});
}
yes.onclick = function() {
fetch(endpoint)
.then(response => response.json())
.then(data => {
data = JSON.stringify(data);
console.log("full data: " + data);
data = JSON.parse(data);
data = data['result'];
data = JSON.stringify(data);
console.log("result array only: " + data);
data = JSON.parse(data);// object.contructor.name
console.log("after parse: " + data);
console.log("data type is: " + data.constructor.name);
data[userInput.value] = "YES";
console.log("final string to write to database: " + data);
writeToDatabase(data);
});
}
no.onclick = function() {
dataString = "{"+userInput.value+": "+"NO"+"}"
writeToDatabase(dataString);
}
我希望它能转换成一个 Javascript 对象,这样我就可以添加一个项目,但它仍然是一个字符串,所以我无法添加一个项目。
代码:https://repl.it/@ErichBuelow/JsonStore-using-JS 视图:https://jsonstore-using-js--erichbuelow.repl.co/
这是 URL 处的数据:
{"result":"{test: NO}","ok":true}
response.json()
然后将其转换为具有两个属性(result
(字符串)和 ok
(布尔值)的 JavaScript 对象。
data = JSON.stringify(data)
将其转换回 JSON,反转 response.json()
.
data = JSON.parse(data);
再次反转它给你更多上述对象。
data = data['result'];
提取 result
属性,为您提供字符串 "{test: NO}"
.
data = JSON.stringify(data);
为您提供该字符串的 JSON 表示。
data = JSON.parse(data);
反转,再次给你字符串。
I tried using parse twice rather than once, but then it gave me an error.
不清楚您在哪里尝试过,但是如果您尝试解析 {test: NO}
那么它会出错,因为该字符串无效 JSON。 { "test": "NO" }
将有效 JSON,但引号丢失。
将 JSON 的字符串嵌入到 JSON 中是很愚蠢的。将原来的JSON表达为:
会更好{
"result": {
"test": "NO"
},
"ok": true
}