2013-03-22 66 views
1

我有一个休息的服务,为这我送JSON数据为["1","2","3"](字符串列表),这是在Firefox工作正常休息的客户端插件,但同时在应用结构发送数据是{"0":"1","1":"2","2":"3"}格式,我不能来传递数据,如何转换{"0":"1","1":"2","2":"3"}["1","2","3"],这样我可以通过发送应用程序的数据,任何帮助将不胜感激。如何发送数据在JSON结构

+0

看到:HTTP://dojotoolkit.org/reference-guide/1.8/dojo/json.html – diEcho 2013-03-22 04:55:53

回答

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"}

+0

不工作仍然 – user1490244 2013-03-22 09:19:37

+0

@ user1490244您可以发布您的代码和/或提供更多信息,为什么它不工作还在?也许任何错误被抛出? – sweetamylase 2013-03-22 16:49:48

0

您需要将json解析回javascript对象。有在道场的后面的迭代分析工具,其他的贡献者之一已经指出的那样,但是大多数浏览器都支持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.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.fromJson页道场/ _base/JSON的例子。