
Oleg
18.08.2016
09:23:13
но при обращении к undefined как к объекту вываливается исключение

Dmitry
18.08.2016
09:27:13
@deviator чnо-то не так получается. смотри:
почему-то только первый элемент выводится

Oleg
18.08.2016
09:27:47
что-то не так ты написал

Google

Oleg
18.08.2016
09:27:50
смотри

Dmitry
18.08.2016
09:27:53
в плане?

Oleg
18.08.2016
09:28:00
json[0]["foo"]
а ты написал
json[0]

Dmitry
18.08.2016
09:28:50
а в данном случае почему выводится только первый элемент? Хотя по идее в переменной с индексом ноль должна быть вся строка

Oleg
18.08.2016
09:28:58
нет
первый элемент массива, который ты скинул, это объект
а не строка
поэтому выводится объект, к нему ещё нужно обратиться
чтобы получить строку
[ <- начало массива
{ <- начало первого объекта
"foo": "123" <- поле внутри объекта
}, <- конец первого объекта
{
"bar": "321"
}
]
Так, я что-то подтупливаю. Есть массив JSON:
[{foo:"123"},{bar:"321"}]
мне чтобы до foo дотянуться что нужно? Цикл писать?

Google

Oleg
18.08.2016
09:33:11
если бы у тебя вместо массива был объект
{"foo": "123", "bar": "321"}, то можно было бы получить через json["foo"] строку 123

Dmitry
18.08.2016
09:35:11
я просто думал, что обращение по индексу ноль выведет:
{"foo": "123", "bar": "321"}
опять что-то не то. Откуда он андефайнт то берет:

Oleg
18.08.2016
10:00:10
ты серьёзно?
ты ко второму элементу должен обрадаться, с чего ты взял, что индекс 0?

Dmitry
18.08.2016
10:01:00
так json при передаче же не гарантирует сохранение порядкового номера

Oleg
18.08.2016
10:01:47
для массивов?
не сохраняет порядок?

Dmitry
18.08.2016
10:02:18
щас погоди перечитаю твое объяснение выше
перечитал
а массив в объект можно перевести?
просто обращаться по номеру мне кажется тупорный вариант

Oleg
18.08.2016
10:04:01
просто одной командой нельзя

Маленькая
18.08.2016
10:04:33
request["konec_plan"] - разве не так?

Dmitry
18.08.2016
10:05:45
неа, не работает. работало бы если бы не внутри массива было

Oleg
18.08.2016
10:06:39
А откуда ты такой json берёшь?
Вообще внутри массивов сохраняется порядок
На то они и массивы

Google

Dmitry
18.08.2016
10:07:13
ну вот блин такой есть( щас любой хак утроит

Макс
18.08.2016
10:08:35
так json при передаче же не гарантирует сохранение порядкового номера
Кстати, а про порядок в объектах это особенность JSON или нет? В смысле, в стандарте JSON есть где-то фраза «Не полагайтесь на порядок в объектах, он никогда не должен влиять на парсинг? Или это только потому что конкретно в D и других языках результирующий ассоциативный массив не упорядочен? Любопытно просто

Маленькая
18.08.2016
10:09:30
незная вашего языка и смотря как выводится 2011-13-11 - так и выводить request["konec_plan"].get
или со to!string

Макс
18.08.2016
10:14:30

Oleg
18.08.2016
10:14:42
а вот массивы сохраняют порядок, иначе теряют смысл

Макс
18.08.2016
10:15:30
да, это понятно)

Oleg
18.08.2016
10:16:22

Макс
18.08.2016
10:17:10
это всё потому что джэйсона нет икспатха! :)
для*

Макс
18.08.2016
10:17:22
забейте, чушь фантазирую

Oleg
18.08.2016
10:18:42
а что такое xpath?

Макс
18.08.2016
10:19:06
это такие «CSS-селекторы» для XML
просто там вроде можно было бы написать /*/something

Oleg
18.08.2016
10:20:33
хм...

Dmitry
18.08.2016
10:25:21
короче мне проще все руками убрав квадратные скобки привести к виду простого JSON объекта {},{}

Макс
18.08.2016
10:26:11
какой странный выход
строка типа лучше, чем готовый распарсенный объект? так не бывает!

Google

Dmitry
18.08.2016
10:28:47
string temp = request.toString.replace("[","").replace("]","");
Json myObj = Json.emptyObject;
myObj = parseJson(temp);
writeln(myObj.toString);
вариант?

Макс
18.08.2016
10:29:33
а, или я чего-то не понял

Dmitry
18.08.2016
10:29:40
кстати, почему-то выводится только первый элемент:
{"nachalo_plan":"2011-13-11"}

Макс
18.08.2016
10:29:50
я слишком поздно начал следить за разговором, ладно, ухожу молчать :)

Dmitry
18.08.2016
10:30:04
такое чувство, что остальные оно не ест т.к. считает не валидными

Макс
18.08.2016
10:30:26

Dmitry
18.08.2016
10:30:40
О. тут еще метод parseJsonString есть. Быть может он опдойдет
{},{} т.е. без [ d начале и ] в конце

Admin
ERROR: S client not available

Макс
18.08.2016
10:31:42
так вроде чтобы распарситься, ты обязан дать парсеру строку, которая распарсится в объект
т.е. один {}, а уже внутри можешь массивы делать

Dmitry
18.08.2016
10:32:34
т.е. {{foo:1}, {bar:2}} ?

Макс
18.08.2016
10:33:04
не понял почему пример именно такой, но да, это уже валидно

Dmitry
18.08.2016
10:33:38
вот исходная строка:
[{"nachalo_plan":"2011-13-11"},{"konec_plan":"2014-12-22"},{"max_sol":"8"},{"min_sol":"8"},{"prioritet":"8"},{"idetent_prod":"4444"},{"idetent_zakaz":"3333"},{"coordinates":[{"d1":20},{"sh1":24},{"d2":20},{"sh2":24},{"d3":20},{"sh3":24},{"d4":20},{"sh4":24}]}]
что мне нужно кроме выкусывания квадратных скобок сделать с ней чтобы ее как объект распарсить?

Макс
18.08.2016
10:36:14
а что за тип парсер возвращает, если не выкусывать? массив ведь?
ну, JSONArray какой-нибудь?

Dmitry
18.08.2016
10:36:58
typeid?

Макс
18.08.2016
10:37:07
и да, реально чудаковатый json)
не

Google

Макс
18.08.2016
10:37:36
https://dlang.org/phobos/std_json.html#.JSONValue.type
если ты стдлибом парсишь

Dmitry
18.08.2016
10:37:55
vibe.data.json.Json

Макс
18.08.2016
10:38:05
в вайбе свой аналог, очевидно
через который ты узнаёшь, что в переменной: массив, объект, число, строка

Dmitry
18.08.2016
10:39:40
так... может реально на веб части поправить...
http://www.everfall.com/paste/id.php?ztw8ozaehbrn
как эту пежню привести к виду объекта?

Макс
18.08.2016
10:42:04
ну напрашивается же: квадратные скобки замени на фигурные, а фигурные убери
порядок потеряешь
но неужели он важен?
и да, собирал бы ты лучше JSON как... JSON! а не как строку

Dmitry
18.08.2016
10:43:40
убрать квадратны понятно, а фигурные убрать — это ты какие имешь ввиду?

Макс
18.08.2016
10:44:09
так, всё, мой лимит вникания кончился) может, вечером ещё помогу
ребят, остальные, подхватывайте))

Dmitry
18.08.2016
10:44:35
ок) пасибо)
Макс, все я понял про какие скобки ты сказал

Oleg
18.08.2016
11:04:21
чо вы мутите?
{{"foo": "bar"}, {"baz": "ok"}} это не валидный json
он не должен парситься
почему ты не хочешь всю строку отправить в парсинг, получить объект с массивом объектов и получать по индексу?
как я в самом начале предложил json[N][key], где N — номер в массиве, key — ключ
тогда вообще какой смысл работать с json? у тебя есть доступ к коду, который отправляет, доступ к коду который принимает — напиши как тебе удобно, например "key1=value1&key2=value2"