JSON到JavaScript字符串
我看过很多关于如何将Javascript字符串转换为JSON的文章,但没有任何文章建议如何将JSON对象转换为Javascript字符串 下面的代码片段在javascript控制台上的中显示时返回正确的值,但是,当我尝试对JSON.element进行字符串比较时,它失败了 下面是URL请求返回的JSONJSON到JavaScript字符串,javascript,json,string,Javascript,Json,String,我看过很多关于如何将Javascript字符串转换为JSON的文章,但没有任何文章建议如何将JSON对象转换为Javascript字符串 下面的代码片段在javascript控制台上的中显示时返回正确的值,但是,当我尝试对JSON.element进行字符串比较时,它失败了 下面是URL请求返回的JSON { "id": "1e003033", "name": "camera", "last_app": null, "last_ip_address": "192.168.0.27"
{
"id": "1e003033",
"name": "camera",
"last_app": null,
"last_ip_address": "192.168.0.27",
"last_heard": "2016-08-27T14:22:49.762Z",
"product_id": 6,
"connected": true,
"platform_id": 6,
"cellular": false,
"status": "normal",
"pinned_build_target": "0.5.2",
"variables": {
"lonlat": "string",
"speedmph": "string",
"sats": "string"
},
"functions": []
}
下面是代码片段:
requestURL_O = "https://api.spark.io/v1/devices/" + deviceID + "/?access_token=" + accessToken;
$.getJSON(requestURL_O, function(jonline){
console.log(jonline.connected);
jstr = jonline.connected;
dt_str = jonline.last_heard;
console.log(jstr);
if (jstr == "true"){
online_status = true;
console.log("equal = TRUE");
}
else {
online_status = false;
jstr = jonline.last_heard;
console.log(jonline.last_heard);
console.log("equal = FALSE");
}
});
console.logjstr返回为true。
console.logjonline.connected返回为true
下面的比较总是通过另一个进行的
if (online_status) {
document.getElementById("temp").innerHTML = "Online";
document.getElementById("tstamp").innerHTML = "Last heard from (GMT) Date/Time -> " + jstr;
}
else {
document.getElementById("temp").innerHTML = "NOT Online";
document.getElementById("tstamp").innerHTML = "Last heard from (GMT) Date/Time -> " + dt_str;
}
我相当确定JSON对象需要转换为javascript字符串,但我还无法找到实现这一点的方法。我找到的所有搜索都是关于从javascript到JSON的
提前感谢您的帮助 jonline.connect!=jonline.connected 更改jstr=jonline.connect;至jstr=jonline.connected 您不需要将JSON字符串转换为JS对象,因为jQuery的$.getJSON已经自动转换了它 另外,斯奎特在下面的评论中指出,您还将对象中的布尔真值与字符串真值进行比较。这不是一回事 将if jstr==true{更改为if jstr==true{ 这是因为在json中有一行connected:true,而非connected:true 根据您的评论,另一个问题似乎是,您用于根据结果设置html内容的代码在执行JSON回调之前进行比较。在$.getJSON之后追加的所有内容都将立即发生,即使JSON尚未加载,因为这是一个异步函数 您可以在回调中添加代码:
if (jstr == "true") {
online_status = true;
document.getElementById("temp").innerHTML = "Online";
document.getElementById("tstamp").innerHTML = "Last heard from (GMT) Date/Time -> " + jstr;
} else {
online_status = false;
jstr = jonline.last_heard;
document.getElementById("temp").innerHTML = "NOT Online";
document.getElementById("tstamp").innerHTML = "Last heard from (GMT) Date/Time -> " + dt_str;
}
或者,如果online_status是一个变量,您可以在不使用函数的情况下引用,而当前不是,如果我正确理解了您的注释,您可以使用online_status比较创建一个函数,并在设置值后在$.getJSON回调中调用它。
var x={城市:纽约};
JSON.stringifyx;/'{城市:纽约}'JSON.stringify?@AmanRawat为什么你认为它是重复的?你读过有人发布的答案吗?@AmanRawat但他错了。他不需要将它转换为Javascript字符串。因此它不是重复的。@AmanRawat如何将它转换为Javascript字符串来解决jstr=jonline.connect;不起作用的问题?@Barmar不可能,但问题标题和描述误导了我得出这个结论。虽然我现在明白了,但感谢你指出:这是问题的一部分,但不是全部。OP比较jstr==true,它将布尔值与字符串进行比较,当jstr为true时会产生错误的结果。我更新了代码片段,并修复了错误输入错误并将If-jstr==true更改为If-jstr==true,现在在线_状态变量被设置为true,但是,If-online_状态==true每次都会失败到else。console.log表示它等于true。@user3254596则可能是范围问题。您最初在哪里声明了在线_状态?@user3254596 Yea是的ht,在$.getJSON方法之后附加的任何代码都将在返回JSON之前执行,因为它是一个异步函数。将if online_状态放在$.getJSON回调方法中,尽管为什么不将document.getElementByIdtemp.innerHTML放在if jstr==true中呢{如果online_status仅在该函数中可用?@user3254596:。这一问题一天会被询问多次。问题的标题具有误导性。这里的问题不是真正的问题,而是标题中问题的正确答案。