1

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

4

2 回答 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 回答