@dlangru

Страница 53 из 719
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: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
кстати, почему-то выводится только первый элемент: {"nachalo_plan":"2011-13-11"}
а как строка выглядит после обрезания? вроде вы тут это уже обсуждали n дней назад...

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"

Страница 53 из 719