January 2026

S M T W T F S
    1 23
45 678910
11121314151617
18192021222324
25262728293031

Style Credit

Expand Cut Tags

No cut tags
Monday, January 16th, 2023 08:45 am
Решил более пристально разобраться с json, что оно такое и с чем едят. Полез ковыряться с jq — в изумлении непреходящем вторые сутки: это ж надо было так хитровыгнуто сочинить, у меня от его выражений остатки ума вытекают. Народ, кто в теме, объясните идиоту как быть в таком случае:
на выходе неких фильтров образуется нечто вроде
{"a":1}
{"b":2}
{"c":3}

Как это привести к виду
{
  "a": 1,
  "b": 2,
  "c": 3
}
? Вроде элементарно должно быть, но я мозг уже сломал.
Monday, January 16th, 2023 07:17 am (UTC)
На чём сделать-то надо? Запятая после последнего члена допустима? Пробелы вставлять обязательно?

ЗЫ AWK, в предположении о допустимости последней запятой, без проверок входа и т.п.:
#! /usr/bin/gawk -f

BEGIN { print "{" }
{
    gsub(/[{}]/, "", $0)
    print "  " $0 ","
}
END  { print "}" }



ЗЗЫ Вариант центральной части с простым предусловием и небольшим "улучшайзингом":
/^{.*}$/ {
    sub( /^{/, "  ", $0)
    sub (/}$/, ",", $0)
    sub (/:/, ": ", $0)
    print
}
Edited 2023-01-16 07:33 am (UTC)
Monday, January 16th, 2023 11:51 am (UTC)
Гм... Впервые эти буквы вижу. Дер штандарт, говорите? Придётся когда-нибудь покурить. Наверное.
Monday, January 16th, 2023 11:55 am (UTC)
Да понятно уже. Это как "ВСЕ пишут на Питоне", только на ДжейКю ;-)
Monday, January 16th, 2023 12:20 pm (UTC)
Оч. хор.
Monday, January 16th, 2023 09:17 am (UTC)
Второе это объект/карта, первое это три отдельных объекта построчно. Целиком оно не прочитается.
Monday, January 16th, 2023 11:17 am (UTC)
Непонятно, что из чего делается. Надо как-то слепить выходные данные в одно. Навскидку находится:

--slurp/-s:
Instead of running the filter for each JSON object in the input, read the entire input stream into a large array and run the filter just once.
Monday, January 16th, 2023 12:04 pm (UTC)
Опять же, логически это вложенное фильтрование, например:
https://stackoverflow.com/questions/54254963/nested-filtering-with-jq
Monday, January 16th, 2023 11:15 am (UTC)
В рамках строгой типизации такое из коробки не сделаешь, а для js:
```
var a = {"a": 1};
var b = {"b": 2};
var c = {"c": 1};
var res = {...a,...b,...c}
```

Что там jq умеет я не в курсе, но, наверное, как-то может слить три объекта в один.
Edited 2023-01-16 11:16 am (UTC)
Monday, January 16th, 2023 11:18 am (UTC)
Первое, что приходит по запросу "jq merge multiple json".
https://stackoverflow.com/questions/19529688/how-to-merge-2-json-objects-from-2-files-using-jq
Указанная там магия не подходит?