【问题标题】:how to send the data in Json structure如何以 Json 结构发送数据
【发布时间】:2013-03-23 19:10:45
【问题描述】:

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

【问题讨论】:

标签: json rest dojo


【解决方案1】:

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

【讨论】:

  • @user1490244 您能否发布您的代码和/或提供更多信息以说明为什么它仍然无法正常工作?也许会抛出任何错误?
【解决方案2】:

您需要将 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 示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-31
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    • 1970-01-01
    相关资源
    最近更新 更多