2

我需要从 javascript 调用 Web 服务,该服务返回以下格式的 JSON 数组:

["hello","there","I","am","an","array"]

不幸的是,我正在使用(Sencha Touch)将此数据加载到小部件中的 javascript 库不接受该格式作为数据输入。但是,它将适用于这样的事情:

[["hello"],["there"],["I"],["am"],["an"],["array"]]

所以这里有两个问题——如何在 javascript 中调用该 Web 服务,然后将返回的数组操作为我需要的格式?我一直在研究 jQuery 的 getJson() 方法,不确定这是要走的路还是有更好的方法。

提供 JSON 数组的 URL 就在这里。 谢谢你的帮助。

4

2 回答 2

2

这是一个 jsFiddle,显示了您所询问的两个部分。我将 jQuery 用于我的 AJAX 调用(在 jsFiddle 中伪造),并且我使用 Underscore.js 进行操作:

http://jsfiddle.net/JohnMunsch/E7YTQ/

// Part 1: Get the raw data. Unfortunately, within a jsFiddle I can't go get it from a different domain. So I'm
// simulating the call instead.
var rawDataPromise = $.ajax({
    url : "/echo/json/",
    data : fakeData,
    type : "POST"
});
// var rawDataPromise = $.ajax("http://fastmotorcycleservice.cloudapp.net/FastMotorCycleListService.svc/list/Bruno");

rawDataPromise.done(
  function (results) {
    // Part 2: Manipulate the data into the form we need.
    var manipulatedResults = _.map(results, function (item) { return [ item ]; });

    console.log(manipulatedResults);
  }
);

// You could also pull that together into a single call $.ajax(...).done(function (results) { ... });
于 2012-04-13T16:30:02.890 回答
1

一旦您在一个局部变量中拥有数据,您就可以根据需要对其进行操作:

var data = the_function_you_use_to_get_data();
var formatted_array = new Array();
for(i in data){
    var d = new Array();
    d[0] = i;
    formatted_array.push(d);
}

我希望它回答了你的问题

于 2012-04-13T16:13:36.700 回答