Изменить структуру JSON

Я хочу привязать данные из базы данных к линейной диаграмме, но у меня возникли трудности с созданием формата JSON. Пожалуйста, помогите мне изменить JSON следующим образом:

{
  "LineListChart": [
    {
      "name": "Pembunuhan",
      "data": 0
    },
    {
      "name": "Pembunuhan",
      "data": 0
    },
    {
      "name": "Pembunuhan",
      "data": 14
    },
    {
      "name": "Pembunuhan",
      "data": 4
    },
    {
      "name": "Pembunuhan",
      "data": 10
    }
   ]
}

быть таким:

{
  "LineListChart": [
    {
      "name": "Pembunuhan",
      "data": [0,0,14,4,10]
    }
   ]
}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
223
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

вы могли бы использовать reduce посмотрите ниже

var data  = {
  "LineListChart": [
    {
      "name": "Pembunuhan",
      "data": 0
    },
    {
      "name": "Pembunuhan",
      "data": 0
    },
    {
      "name": "Pembunuhan",
      "data": 14
    },
    {
      "name": "Pembunuhan",
      "data": 4
    },
    {
      "name": "Pembunuhan",
      "data": 10
    }
   ]
}

var chartData= data.LineListChart.reduce((result, item)=> {
if (!result.LineListChart){
     result.LineListChart =[{name: item.name, data: [item.data]}];
     }else result.LineListChart[0].data.push(item.data);
    
    return result;
}, {})

console.info(chartData)

Используя API-интерфейс LINQ-to-JSON Json.Net, вы можете преобразовать свой JSON следующим образом:

var obj = JObject.Parse(json);
obj["LineListChart"] = new JArray(
    obj["LineListChart"]
    .Children<JObject>()
    .GroupBy(jo => (string)jo["name"], jo => jo["data"])
    .Select(g => new JObject(
        new JProperty("name", g.Key),
        new JProperty("data", new JArray(g))
    ))
);
json = obj.ToString();

Рабочий пример: https://dotnetfiddle.net/qpuQy7

Поскольку вопрос json.net, я даю ответ на С# с помощью json.net

    string test = @"{
                'LineListChart': [
                {
                    'name': 'Pembunuhan',
                    'data': 0
                },
                {
                    'name': 'Pembunuhan',
                    'data': 0
                },
                {
                    'name': 'Pembunuhan',
                    'data': 14
                },
                {
                    'name': 'Pembunuhan',
                    'data': 4
                },
                {
                    'name': 'Pembunuhan',
                    'data': 10
                }
                ]
            }";

   JObject obj = JObject.Parse(test);

   JArray categories = (JArray)obj["LineListChart"];

   var query = from c in categories group c by c["name"]
                into g select new { name = g.Key.ToString(), 
                     data =g.Select(c => (string)c["data"]) };

   var res = JsonConvert.SerializeObject(new { LineListChart = query.ToList() });

Закрыть, но ваш код преобразует data в строку с разделителями-запятыми вместо массива, как того требовал OP.

Brian Rogers 27.06.2019 06:38

Я имел в виду вот эту строчку: data = string.Join(",", g.Select(c => (string)c["data"])). Я думаю, что это должно быть: data = g.Select(c => c["data"]) . (Исправление, которое вы уже сделали, хорошо.)

Brian Rogers 27.06.2019 06:58

Другие вопросы по теме