我有一个休息服务,我将 Json 数据作为["1","2","3"]
(字符串列表)发送,这在 firefox 休息客户端插件中运行良好,但是在应用程序中发送数据时,结构是{"0":"1","1":"2","2":"3"}
格式,我无法传递数据,如何转换{"0":"1","1":"2","2":"3"}
为["1","2","3"]
以便我可以通过应用程序发送数据,任何帮助将不胜感激。
问问题
74 次
2 回答
0
如果 json 的格式是{ "index" : "value" }
, 是我在 中看到的{"0":"1","1":"2","2":"3"}
,那么我们可以利用该信息,您可以这样做:
var myObj = {"0":"1","1":"2","2":"3"};
var convertToList = function(object) {
var i = 0;
var list = [];
while(object.hasOwnProperty(i)) { // check if value exists for index i
list.push(object[i]); // add value into list
i++; // increment index
}
return list;
};
var result = convertToList(myObj); // result: ["1", "2", "3"]
见小提琴:http: //jsfiddle.net/amyamy86/NzudC/
使用虚假索引“迭代”列表。请记住,如果索引中断,这将不起作用,不能这样:{"0":"1","2":"3"}
于 2013-03-22T05:05:10.573 回答
0
您需要将 json 解析回 javascript 对象。正如其他贡献者之一已经指出的那样,dojo 的后续迭代中有解析工具,但是大多数浏览器都支持JSON.parse()
ECMA-262 第 5 版(JS 所基于的规范)中定义的 . 它的用法是:
var str = your_incoming_json_string,
// here is the line ...
obj = JSON.parse(string);
// DEBUG: pump it out to console to see what it looks like
a.forEach(function(entry) {
console.log(entry);
});
对于不支持的浏览器,JSON.parse()
您可以使用 json2.js 来实现它,但是由于您实际上是在使用 dojo,dojo.fromJson()
所以您可以这样做。Dojo 为您处理浏览器独立性。
var str = your_incoming_json_string,
// here is the line ...
obj = dojo.fromJson(str);
// DEBUG: pump it out to console to see what it looks like
a.forEach(function(entry) {
console.log(entry);
});
如果您使用的是 AMD 版本的 Dojo,那么您需要返回 Dojo 文档并查看dojo.fromJson页面上的 dojo/_base/json 示例。
于 2013-03-23T10:37:43.470 回答