解析从python到Javascript的JSON字符串
Parsing JSON string from python to Javascript
我正在做一个玻璃容器控制器项目,目前我想获取照明的时间段。在python中,我有一个名为getStatus()的函数,它将向Javascript返回一个JSON字符串,这将进一步处理数据。但它不起作用。
这是我的python代码:
def getStatus ():
data=[["HOUR_ON", HOUR_ON],["MINUTE_ON", MINUTE_ON], ["HOUR_OFF", HOUR_OFF], ["MINUTE_OFF", MINUTE_OFF]]
return json.dumps(data)
在Javascript上
:var alertFunction = function macroCallback(macro, args, light) {
alert(macro + " returned with " + light);
var obj = JSON.parse(light);
document.getElementById("testSection").innerHTML="Light turns on at: "+ obj[0].HOUR_ON+":"+obj[0].MINUTE_ON + "'n"+"Light goes out at: "+obj[1].HOUR_OFF+":"+obj[1].MINUTE_OFF;
alert("after parsing: "+obj[0]);
document.getElementById("testSection").innerHTML=light;
}
该字符串似乎是从服务器发回的,并且将被正确解析,仅访问该字符串不起作用,我在 innerHTML 部分中未定义四次。
希望有人能帮帮我!
问候和感谢!
马可
在不更改 Python 代码的情况下,更改 JavaScript 代码以使用索引而不是属性访问数组的元素:
var alertFunction = function macroCallback(macro, args, light) {
alert(macro + " returned with " + light);
var obj = JSON.parse(light);
document.getElementById("testSection").innerHTML="Light turns on at: "+ obj[0][1]+":"+obj[1][1] + "'n"+"Light goes out at: "+obj[2][1]+":"+obj[3][1];
alert("after parsing: "+obj[0]);
document.getElementById("testSection").innerHTML=light;
}
但是,最好遵循jcubic的建议,将Python代码更改为使用字典:
def getStatus ():
data={"HOUR_ON": HOUR_ON,
"MINUTE_ON": MINUTE_ON,
"HOUR_OFF": HOUR_OFF,
"MINUTE_OFF": MINUTE_OFF}
return json.dumps(data)
例如,这将生成如下所示的 JSON 字符串:
'{"HOUR_OFF": 13, "MINUTE_ON": 30, "MINUTE_OFF": 20, "HOUR_ON": 12}'
还可以更改您的 javascript 以访问对象的属性,这更具可读性:
var alertFunction = function macroCallback(macro, args, light) {
alert(macro + " returned with " + light);
var obj = JSON.parse(light);
document.getElementById("testSection").innerHTML="Light turns on at: "+ obj.HOUR_ON + ":" + obj.MINUTE_ON + "'n" + "Light goes out at: "+obj.HOUR_OFF+":"+obj.MINUTE_OFF;
alert("after parsing: "+obj[0]);
document.getElementById("testSection").innerHTML=light;
}
您已经保存了数组而不是对象尝试:
data=[{"HOUR_ON": HOUR_ON},{"MINUTE_ON": MINUTE_ON}, {"HOUR_OFF": HOUR_OFF}, {"MINUTE_OFF": MINUTE_OFF}]
或者最好只有一个对象:
data={"HOUR_ON": HOUR_ON, "MINUTE_ON": MINUTE_ON, "HOUR_OFF": HOUR_OFF, "MINUTE_OFF": MINUTE_OFF}
相关文章:
- 如何使用JSON字符串中的jQuery填充下拉框
- Json字符串可以'当字符串末尾有“'时,t解码;
- jquery从2个json字符串构建一个复选框表单
- RegEx只匹配JSON字符串中最里面的数组
- json字符串的Javascript帖子:没有任何东西传入或返回
- 使用javascript在MVC视图中解析.net JSON字符串
- 用Angularjs+Typescript将GZip Json字符串解压为普通Json字符串
- 如何将表单数据传递给PHP并将json字符串返回给Javascript
- 如何使用AngularJS应用基于Json字符串响应的条件CSS类
- 停止JSON.parse()从JSON字符串数据中删除尾随零
- 将JSON字符串转换为函数参数
- 在AngularJS中创建JSON字符串
- 为什么我不能使用jQuery.parseJSON(json)解析json字符串
- Json字符串更改日期
- JSON字符串格式错误
- Json和$scope的角度之间的差异$eval应用于JSON字符串时
- C#JSON字符串到JavaScript数组
- 如何在JSON字符串中实现嵌套HTML
- 如何从带有多个对象的JSON字符串创建JSON对象
- 使用捕获组查找和替换json字符串中出现的所有短语