如何在Json结构中发送数据

时间:2013-03-22 04:51:25

标签: json rest dojo

我有一个休息服务,我发送Json数据为["1","2","3"](字符串列表),它在firefox rest客户端插件中工作正常,但在应用程序中发送数据时,结构为{{1格式,我无法传递数据,如何将{"0":"1","1":"2","2":"3"}转换为{"0":"1","1":"2","2":"3"}以便我可以通过应用程序发送数据,我们将非常感谢任何帮助。

2 个答案:

答案 0 :(得分: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/

在列表中使用虚假索引“ iterate ”。请记住,如果索引中断,这将无效:{"0":"1","2":"3"}

答案 1 :(得分: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示例。