JSON到JavaScript字符串

JSON到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"

我看过很多关于如何将Javascript字符串转换为JSON的文章,但没有任何文章建议如何将JSON对象转换为Javascript字符串

下面的代码片段在javascript控制台上的中显示时返回正确的值,但是,当我尝试对JSON.element进行字符串比较时,它失败了

下面是URL请求返回的JSON

{
  "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:。这一问题一天会被询问多次。问题的标题具有误导性。这里的问题不是真正的问题,而是标题中问题的正确答案。