LINUX.ORG.RU

Как переформировать данные в JSON

 


0

1

Здравствуйте, коллеги. Вопрос такой: Как можно быстро переделать даные из такого вида:

{
    "one": {
        "a": "aaa",
        "b": "bbb",
        "c": "ссс",

    },
    "two": {
        "a": "AAA",
        "b": "BBB",
        "c": "CCC",
    }
}
В такой:
{
    "a": {
        "one": "aaa",
        "two": "AAA",
    },
    "b": {
        "one": "bbb",
        "two": "BBB",
    },
    "c": {
        "one": "ccc",
        "two": "CCC",
    }
}

Очень хочется зелёную кнопку «сделать всё хорошо». Может есть какой редактор который перегонит данные из одного в другой вид?

Это конференция Job? Тогда:

from functools import reduce

source = {
    "one": {
        "a": "aaa",
        "b": "bbb",
        "c": "ссс",

    },
    "two": {
        "a": "AAA",
        "b": "BBB",
        "c": "CCC",
    }
}


def f(x, y):
    x[y] = {key: source[key][y] for key in source.keys()}
    return x


res = {}
reduce(f, source['one'].keys(), res)
{'a': {'one': 'aaa', 'two': 'AAA'}, 'b': {'one': 'bbb', 'two': 'BBB'}, 'c': {'one': 'ссс', 'two': 'CCC'}}
vvn_black ★★★★★ ()
Ответ на: комментарий от deep-purple

deep-purple
Данные хранятся в таком виде в MySQL.
Порядка пятисот строк, по ячейке в каждой строке.
Соответственно, ЯП желательно как-то близко к этой задаче сделать. То есть, php например.

Piter_prbg ()
Ответ на: комментарий от Ingwar

Всем спасибо за ответы!
начал разбираться по порядку. Первое предложение в теме было jq, чё-то сходу не вижу там нужного функционала, там больше фильтров всяких. Думаю, быстрее пыхнуть.

Piter_prbg ()

Ты приходишь в Development и называешь нас коллегами, но ты делаешь это без уважения. Попробуй написать программу, которая сделает, что тебе нужно — твои «коллеги» обычно решают подобные проблемы именно так.

Virtuos86 ★★★★★ ()
Ответ на: комментарий от iZEN

Ребята, да вы приколисты. Два часа ))

Тот анон хочет сотку наверное из расчёта того, что он вообще неделю работать будет.

Вот например на php

// .. Перед циклом получаем нужные строки из бд, и перебираем их:
foreach ($models as $model) {
    $val = json_decode($model->jsonfield); //jsonfield это например наше поле в строке, которое содержит json
    foreach ($val as $key1 => $value1) {
        foreach ($value1 as $key2 => $value2) {
                $arr[$key2][$key1] = $value2;
        }
    }
    $model->jsonfield = json_encode($arr, JSON_UNESCAPED_UNICODE);
    $model->save();
}

Piter_prbg ()
Ответ на: комментарий от Piter_prbg

Просили как можно ближе к БД. Предложу использовать ORM на JavaEE, например, JPA 2.2 или EJB 3.2 с передачей клиенту в форму JSF 2.3 в виде JSON-ответа на REST-запрос. Извращаться, так уж извращаться...

iZEN ★★★★★ ()