jquery - 重新格式化 JSON 对象

标签 jquery arrays json

我有一个 JSON 对象,我想重新格式化,这就是我的意思...

JSON 对象...

{
"query":"de mar",
"suggestions":[
    "Any Location",
    "Camp De Mar, Majorca, SPAIN",
    "L'amettla De Mar, Costa Dorada, SPAIN",
    "Lloret De Mar, Costa Brava, SPAIN",
    "Malgrat De Mar, Costa Brava, SPAIN",
    "Pineda De Mar, Costa Brava, SPAIN",
    "Roquetas De Mar, Costa De Almeria, SPAIN",
    "Tossa De Mar, Costa Brava, SPAIN"
],
"data":[
    "",
    "DestinationResort|Camp De Mar",
    "DestinationResort|L'Amettla De Mar",
    "DestinationResort|Lloret De Mar",
    "DestinationResort|Malgrat De Mar",
    "DestinationResort|Pineda De Mar",
    "DestinationResort|Roquetas De Mar",
    "DestinationResort|Tossa De Mar"
]
}

我想把它变成下面的...

{
"destinations": [
    "": "Any Location",
    "DestinationResort|Camp De Mar": "Camp De Mar, Majorca, SPAIN",
    // etc etc
]
}

目前我有以下内容(jquery 编码的可悲使用)...

$("#search").on("input", function() {
  $.getJSON( "http://holidays.allinclusive.co.uk/external/destinations.ashx?query=" + $("#search").val() )
  .done(function(data) {
    var myObject = ['destinations'];
    $.each(data.suggestions, function (index, elem) {
      myObject['destinations'] = {[data.data[index]] : [elem] };
    });
  })
});

我真正想做的是将其与 autocomplete() 或 bootstrap 的 typeahead() 一起使用来填充输入,但我认为这是我的下一步。

请问有人可以帮助我吗?

谢谢

最佳答案

您已经非常接近了,但是在创建新对象时存在一些问题。

var myObject = ['destinations'];

这将创建一个包含单个元素(字符串“destinations”)的数组。您真正想要的是一个具有空数组属性 destinations 的对象,因此将其更改为:

var myObject = {
    destinations: []
};

.each() 迭代是正确的,但每次迭代的代码不正确。您的代码正在执行的操作是获取数组 myObject,并将该数组的 destinations 属性(在第一次迭代中不存在)设置为等于当前的对象迭代;相反,您希望将新对象插入数组中。对象的创建也存在问题,因为创建对象文字时不能使用动态键。

$.each(data.suggestions, function (index, elem) {
    var currentObject = {}
    currentObject[data.data[index]] = elem;
    myObject.destinations.push(currentObject);
});

jsFiddle demo

关于jquery - 重新格式化 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17045007/

相关文章:

javascript - 如何在所有 jQuery 加载函数完成之前停止加载网页?

javascript - jquery显示/隐藏按钮标题

java - 使用 Yasson 和 Johnzon 构建 JSON 对象的差异

java - Android JSON通过HttpURLConnection获取错误405

javascript - 从本地 (OBJECT) JSON 文件中的数据创建饼图 Highcharts

JQuery 在单击父 div 时切换复选框

javascript - 单击时内容 block 叠加淡入/淡出

c++ - 是什么让 char * 成为一个字符数组?

c++ - 奇怪的错误。在循环中使用 rand() 和数组

c++ - 为什么我的程序有时只能正确识别数组中的最高值和最低值?