2015-07-21 2 views
-2

{"{\" 3 \ ": \" Дубай \ ", \" 2 \ ": \" Ajman \ ", \" 1 \ ": \" Абу-Даби \ " , \ "7 \": \ "Umm al-Quwain \", \ "6 \": \ "Sharjah \", \ "5 \": \ "Рас-аль-Хайма \", \ "4 \": \ «Fujairah \"} ":" {\ "3 \": \ "Дубай \", \ "2 \": \ "Ajman \", \ "1 \": \ "Абу-Даби \", \ "7 \ ": \" Umm al-Quwain \ ", \" 6 \ ": \" Sharjah \ ", \" 5 \ ": \" Рас-аль-Хайма \ ", \" 4 \ ": \" Фуджейра \ "} "," {\ "17 \": \ "Тайский \", \ "18 \": \ "Корейский \", \ "15 \": \ "Традиционный китайский \", \ "16 \": \ "Упрощенный Chinese \ ", \" 14 \ ": \" English (Азия) \ "}": "{\" 17 \ ": \" Thai \ ", \" 18 \ ": \" Korean \ ", \" 15 \ ": \" Традиционный китайский \ ", \" 16 \ ": \" Упрощенный китайский \ ", \" 14 \ ": \" Английский (Азия) \ "}"}Как проанализировать ответ ajax в jQuery

+0

Wow, что это сериализация пути? – jmar777

+0

Действительно, каков должен быть ответ? Предполагается, что это какой-то массив? – pingul

+1

(1) Кажется, ваши двойные кавычки ускользают в дополнительное время. (2) Пожалуйста, разместите код, который у вас есть. – shoover

ответ

0

Непонятно, как вы точно хотите, чтобы проанализированный результат выглядел, но здесь идет речь:

var raw = '{"{\"3\":\"Dubai\",\"2\":\"Ajman\",\"1\":\"Abu Dhabi\",\"7\":\"Umm al-Quwain\",\"6\":\"Sharjah\",\"5\":\"Ras al-Khaimah\",\"4\":\"Fujairah\"}":"{\"3\":\"Dubai\",\"2\":\"Ajman\",\"1\":\"Abu Dhabi\",\"7\":\"Umm al-Quwain\",\"6\":\"Sharjah\",\"5\":\"Ras al-Khaimah\",\"4\":\"Fujairah\"}","{\"17\":\"Thai\",\"18\":\"Korean\",\"15\":\"Traditional Chinese\",\"16\":\"Simplified Chinese\",\"14\":\"English (Asia)\"}":"{\"17\":\"Thai\",\"18\":\"Korean\",\"15\":\"Traditional Chinese\",\"16\":\"Simplified Chinese\",\"14\":\"English (Asia)\"}"}'; 

var re = /\"(\d+)\":\"(.*?)\"/g, 
    matches = [], 
    match; 

while(match = re.exec(raw)) { 
    matches.push(match); 
} 

var parsed = matches.reduce(function(result, cur) { 
    result[cur[1]] = cur[2]; 
}, {}); 

console.log(parsed); 

> Object {1: "Abu Dhabi", 2: "Ajman", 3: "Dubai", 4: "Fujairah", 5: "Ras al-Khaimah", 6: "Sharjah", 7: "Umm al-Quwain", 14: "English (Asia)", 15: "Traditional Chinese", 16: "Simplified Chinese", 17: "Thai", 18: "Korean"} 

В качестве альтернативы, если Вы желаете их разобраны в массив, изменить редуктор для этого:

var parsed = matches.reduce(function(result, cur) { 
    result[cur[1] - 1] = cur[2]; 
    return result; 
}, []); 

console.log(parsed); 

> ["Abu Dhabi", "Ajman", "Dubai", "Fujairah", "Ras al-Khaimah", "Sharjah", "Umm al-Quwain", undefined × 6, "English (Asia)", "Traditional Chinese", "Simplified Chinese", "Thai", "Korean"] 
Смежные вопросы