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",
    }
}

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

ETL, motherfucker, did you google it?

anonymous
()

Это конференция 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 ★★★★★
()
Ответ на: комментарий от vvn_black

Блин! Ведь знал же, что можно проще сделать, и тем не менее накорябал очень криво без всяких импортов =\

Deleted
()
Ответ на: комментарий от deep-purple

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

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

При чём тут груп бай... у меня в каждой ячейке код с json-ом, который надо переделать

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

я делал практически так же, но с дополнительной проверкой на то, что ключи внутри каждого ключа идентичны

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

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

Piter_prbg
() автор топика

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

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

Увенренн что я смпешной а не ты?

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

Думаю, быстрее пыхнуть.

«Может есть какой редактор, но чтобы только php!»

vvn_black ★★★★★
()

Пишешь на Java простой конвертер из JSON в POJO и обратно. Делов-то на два часа.

iZEN ★★★★★
()
Ответ на: комментарий от 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
() автор топика
Ответ на: комментарий от Virtuos86

Virtuos86, то-то я смотрю, эта ветка форума пустая.

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

Интересная интерпретация ))
deep-purple

Для чела с такой аватарой?! ;-)

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

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

iZEN ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.