У меня есть простой набор JSON, который нужно переформатировать, поскольку все пары значений ключей не всегда выводятся.Reformat JSON с динамическими именами объектов в jQuery
{
"result": [
{
"category": "Negative Notification",
"event": "open",
"result": 2
},
{
"category": "Referral",
"event": "bounce",
"result": 1
},
{
"category": "Negative Notification",
"event": "delivered",
"result": 34
},
{
"category": "Negative Notification",
"event": "processed",
"result": 34
},
{
"category": "Positive Notification",
"event": "open",
"result": 42
},
{
"category": "Referral",
"event": "delivered",
"result": 17
},
{
"category": "Positive Notification",
"event": "processed",
"result": 504
},
{
"category": "Referral",
"event": "processed",
"result": 18
},
{
"category": "Positive Notification",
"event": "delivered",
"result": 504
},
{
"category": "Negative Notification",
"event": "bounce",
"result": 16
},
{
"category": "Positive Notification",
"event": "bounce",
"result": 176
},
{
"category": "Referral",
"event": "open",
"result": 10
}
]
}
Проблема с тем, как это выход в зависимости от погоды имеются данные или нет, доступ к объектам по номеру может создать неожиданную функциональность. Вторая проблема заключается в том, что нужно манипулировать с помощью javascript и не может обрабатываться на стороне сервера.
Я хотел бы, чтобы JSON был переформатирован так, чтобы каждая категория была объектом (в настоящее время три, но может быть целых пять) суммирует данные внутри объекта. Например:
{
"result": {
"Negative Notification" : [
{
"processed":34,
"delivered":34,
"bounces":16,
"opens":2
}
],
"Positive Notification" : [
{
"processed":504,
"delivered":504,
"bounces":176,
"opens":42
}
],
"Referral" : [
{
"processed":18,
"delivered":17,
"bounces":1,
"opens":10
}
]
}
}
Как бы снять это? Простое перемещение и называние объектов никуда не ведет.
У меня нет доступа к системе, которая выводит данные. Как бы вы получили все данные внутри этого? – Taylor
@ Тейлор: не может победить всех ... Тогда вам придется использовать либо мой ответ, либо TJ Crowders, либо объединить два (как в случае использования массива, просто использовать литералы объектов) –
Спасибо за Помогите. Я посмотрю, смогу ли я закончить это и получить оставшиеся элементы для вывода. Существует преимущество в том, чтобы упростить имена событий ex: {"bounce": 16}, любые идеи о том, как это сделать? – Taylor