Форматирование JSON для угловой привязки данных

0

когда мой вызов ajax завершает массив json, возвращается Изображение 174551

для привязки к угловым данным для работы отлично, мне нужно объединить все значения в один файл JSON. Я пробовал $.extend(), давая следующий результат Изображение 174551

Нужно решение для этого

например, если мой ответ выглядит так:

[0:"{'test':'test'}", 1:"{'test':'test'}", 2:"{'test':'test'}",3: "{'test':'test'}"];

мне нужен результат:

{ test':'test', 'test':'test', 'test':'test', 'test':'test' }

Изменение: окончательное значение будет автоматически привязано к ng-модели.

желаемый пример вывода:

{
"unique_id": 172,
"portfolio": "DIGITAL",
"bus_unit": "dummy",
"project_phase": "",
"test_phase": "SIT",
"project": "Google",
"golivedate": "03/09/2016",
"performance": "Green",
"summary": "jgnbfklgnflknflk",
"last_updated": "",
"risks_issues": "gfmngfnfglkj",
"project_start": "03/16/2016",
"batchLast_run": "",
"custom_project": "1",
"test_execution_id": 5456,
"unique_id": 172,
"test_execution_id": 5456,
"pass": 8,
"fail": 8,
"blocked": 8,
"in_progress": 8,
"no_run": 8,
"not_available": 0,
"total": 8  
}
  • 0
    Вы можете опубликовать свой ответ правильно?
  • 0
    А также опишите, что именно мне нужно объединить все значения в один файл JSON означает?
Показать ещё 2 комментария

4 ответа

2
Лучший ответ

Насколько я понимаю, вы пытаетесь преобразовать массив данных Json в один сингл json data. Таким образом, у вас есть массив значений, но вы хотите, чтобы все они были в одной переменной. Попробуй это

var testData = ["{'test':'test'}", "{'test':'test'}", "{'test':'test'}", "{'test':'test'}"];

var finalData ="";

$.each(testData,function(index,value){
   finalData += value +',';
});

finalData = finalData.replace(/\},\{/g,',').slice(0, -1);

document.write(finalData);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  • 0
    nope ваш ответ выводит {'test': 'test'}, {'test': 'test'}, {'test': 'test'}, {'test': 'test'} мне нужно {test ' : 'тест', 'тест': 'тест', 'тест': 'тест', 'тест': 'тест'}
  • 0
    Привет мой ответ выглядит как [0: "{'test': 'test'}", 1: "{'test': 'test'}", 2: "{'test': 'test'}", 3: "{ 'тест': 'тест'}"];
Показать ещё 3 комментария
1

Карта просто применяет эту функцию к каждому элементу массива.

var arrayOfJSON = ...
var arrayOfObjects = arrayOfJSON.map(function (jsonString){
    return JSON.parse(jsonString)
})
var jsonStringWithAllObjects = JSON.stringify(arrayOfObjects)
1

Если вы используете underscore.js тогда можете легко

как:

var list = [{"test1": "test1"}, {"test2": "test2"}, {"test3": "test3"}];
var newList = _.extend.apply(null,[{}].concat(list));

то вывод будет

{ test1: "test1", test2: "test2", test3: "test3" }
  • 0
    Вы можете объяснить? Я не понимаю, как работает этот код?
  • 0
    Скопируйте все свойства в исходных объектах в целевой объект и верните целевой объект.
Показать ещё 1 комментарий
0

Итерации по массиву, преобразование каждого значения в объект JSON, конкатенация, а затем преобразование в строку обратно.

Если вам нужно больше времени, вы, вероятно, должны сделать это функцией.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню