
Ilya
26.10.2016
15:41:51
окей
короче, есть у меня такой вот JSONчик
{
"paymentFields": [
{
"id": "test",
"name": "name",
"fieldType": "Text",
"value": "7348567384657834"
}, {
"id": "date",
"name": "date",
"fieldType": "Time",
"value": {
"milliseconds": 1411416000000
}
}, {
"id": "test2",
"name": "test2",
"fieldType": "Text",
"value": "18810015140000024684"
}
]
}
Отсюда видно, что поле value может быть строкой или объектом, так вот, чтобы его распарсить в Golang, как мне построить структуру, в которой поле могло бы принимать либо строку, либо другую структуру?

Konstantin
26.10.2016
15:46:27
о, ребят. А GoLang(еров) нет кто хочет поковырятся в чужом коде и поправить несколько моментов за денежку конечно. Если есть, ко в лс

Сергей
26.10.2016
15:47:32
отличное предложение в чате ноджс

Google

KlonD90
26.10.2016
15:49:51
короче, есть у меня такой вот JSONчик
{
"paymentFields": [
{
"id": "test",
"name": "name",
"fieldType": "Text",
"value": "7348567384657834"
}, {
"id": "date",
"name": "date",
"fieldType": "Time",
"value": {
"milliseconds": 1411416000000
}
}, {
"id": "test2",
"name": "test2",
"fieldType": "Text",
"value": "18810015140000024684"
}
]
}
Отсюда видно, что поле value может быть строкой или объектом, так вот, чтобы его распарсить в Golang, как мне построить структуру, в которой поле могло бы принимать либо строку, либо другую структуру?
Плохой подход чот

Vladimir
26.10.2016
15:50:33
Можно в map распарсить
Или мб просто value как interface{} объявить

Ilya
26.10.2016
15:59:34
оно автоматически тип подгонит?
так что норм предложение

KlonD90
26.10.2016
16:00:37

Ilya
26.10.2016
16:01:38
ладно, буду эксперементировать

KlonD90
26.10.2016
16:03:13
Ну хотя можно что-то делать. Но ты по сути функцию маршалера выполняешь
Нужен тогда свой

Vladimir
26.10.2016
16:13:21
> @Perkovec
оно автоматически тип подгонит?
думаю map будет там где объекты
его можно потом руками на структуру заменить

Google

Vladimir
26.10.2016
16:13:49
видел где то мэппер универсальный

Ilya
26.10.2016
16:16:00

Tony
26.10.2016
18:06:35
А тем временем вышла седьмая версия Node.js, несущая радости async/await без транспиляции.... Подробнее: https://vk.com/wall-97408246_17102

Paul
26.10.2016
18:52:23
Она не несёт радости async/await
Мир js вчера познал силу желтых заголовков по полной
Сюда всему чату смотреть:
https://github.com/nodejs/promises/issues/4#issuecomment-254159118

Nikita
26.10.2016
19:37:23
а стандартную либу с интерфейсами в промисах не собираются сделать все еще?

Vladimir
26.10.2016
19:43:03
ты про ядро?

KlonD90
26.10.2016
19:43:10
https://twitter.com/HexletHQ/status/791202478410829825 всем плевать но я посмотрю ❤️

Vladimir
26.10.2016
19:43:35
там всё плохо с промисами в ядре

Nikita
26.10.2016
19:47:51
fs, например

Vladimir
26.10.2016
19:49:20
ага
ядро
всё плохо

Nikita
26.10.2016
19:49:44
не понятно, что мешает добавить методы с суффиксом Async

Vladimir
26.10.2016
19:49:53
неа

Nikita
26.10.2016
19:49:55
ровно как делает bluebird

Vladimir
26.10.2016
19:50:07
как раз из-за блюбёрда и не могут

Nikita
26.10.2016
19:50:21
лол, типо BC поломают?)

Google

Vladimir
26.10.2016
19:50:55
типа проекты на bluebird сломают

Nikita
26.10.2016
19:51:01
bluebird я думаю не обломается мажорную версию бампнуть и поставить ограничение на версию ноды
а bluebird не перезаписывает методы?

Vladimir
26.10.2016
19:52:18

Nikita
26.10.2016
19:52:39
никто не мешает объявить их все deprecated
это стандартный процесс, а тянуть BC на столько - это то, что всех и всегда бесит

Vladimir
26.10.2016
19:54:21
что такое BC?

Nikita
26.10.2016
19:55:01
backwards compatibility
те, кто сейчас тут же перейдут на 7 ноду на столько хипстеры, что убрать bluebird где не надо и добавить где надо - прям не очень сложно.
А кому сложно - сидит на LTS

Vladimir
26.10.2016
20:02:55
не-не
ты перейдёшь
свои либы переведешь

Vladimir
26.10.2016
20:03:21
обновишься на 7.5 с асинками
а часть либ не обновили у себя блубёрд
и у тебя всё взорвалось
примерно так
и даже этот кейс сложнее
остальные тоже
изначальный ПР заглох
инициатива тоже

Google

Vladimir
26.10.2016
20:06:51
https://github.com/nodejs/node/pull/5020
там в соседнем треде @vkurchatkin предлагает идеи https://github.com/nodejs/NG/issues/4

Nikita
26.10.2016
20:09:01
о, там импорты... вообще с введением импортов можно было бы впринципе поломать это)
то есть хочешь импортировать - используй версию с промисами

Vladimir
26.10.2016
20:09:27
ещё постмортем тоже заноза с промисами
https://github.com/nodejs/post-mortem/issues/16

Andrey
26.10.2016
20:10:01
А что делает bluebird с fs? А то тоже удивляло, зачем самому писать враперы для промиссов

Nikita
26.10.2016
20:10:45
мм, вроде ничего. просто оборачивает

Admin
ERROR: S client not available

Nikita
26.10.2016
20:11:18
причем петька не рекомендует это делать втупую, return new Promise..., типо не эффективно, на солько я помню
кароч многабукф, мельком пробежался, опять понятно, что хрен кто договорится)

Andrey
26.10.2016
20:12:00
Нашел, у него есть метод bluebird.promisifyAll

Nikita
26.10.2016
20:12:22
меня не обламывало никогда использовать bluebird и оборачивать ручками, но хочется чтобы и стандартные средства развивались)

Vladimir
26.10.2016
20:13:16
в общем пост-мортем и соглашение и чтобы коллбек людям было точно также, и чтобы промисы были 1st class citizens

Nikita
26.10.2016
20:14:15
а что про варик сказали, как некоторые либы делают, когда последний аргумент не передешь - вернуть промис?
mongo и nodegit так вроде делают
монго точно

Vladimir
26.10.2016
20:14:37
тоже не работает
некоторые методы просто работают дальше без коллбека

Google

Vladimir
26.10.2016
20:15:18
кто-то возвращает значение работая синхронно

Nikita
26.10.2016
20:15:28
в стандартной либе?

Vladimir
26.10.2016
20:15:36
в ядре да
с доменами вообще провал
со стримами тоже кажется не всё так просто
вобщем "всё сложно"
import _fs from 'fs';
import pify from 'pify';
const fs = pify(_fs);

Nikita
26.10.2016
20:17:06
а кстати

Vladimir
26.10.2016
20:17:14
или mz

Nikita
26.10.2016
20:17:18
некоторые методы наверняка же не 1 аргумент возвращают

Vladimir
26.10.2016
20:17:31
https://github.com/normalize/mz
import fs from 'mz/fs'

Nikita
26.10.2016
20:18:18
я предполагаю.. ну например
fs.readFile(fileName, (err: ?Error, content: string, charset: string) => void);
а еще отсутствие cancel прям обламывает
интересно, а в bluebird пробовали законтрибьютить require('bluebird/fs')?)

Vladimir
26.10.2016
20:22:42
const [err, content] = await fs.readfile('file', 'utf8')

Nikita
26.10.2016
20:23:23
Go!? что? где?

Vladimir
26.10.2016
20:23:30

Nikita
26.10.2016
20:23:50
в bluebird. либо я устал и странное пишу, либо ты))