Size: a a a

Clojure — русскоговорящее сообщество

2021 July 22

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
я не спорю, что в Кложе удобнее сделано, но все-равно наезд несколько странно выглядит
источник

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
для 1999-го он хорош, но как бы 2021 уже
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
мм...
запятая... комменты...
вы что джсоны руками пишите и читаете что-ли?
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
Ну поверь, есть способ. Просто в этой реализации не стали париться ради удобства клиента. Пусть помучается, пусть «зарабатывает» денежку! А не пинает воздух.
Культура такая, понимаешь? Вернее отсутствие её.
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
извини, уважаемый?
ты как давно вообще в программировании, что так рассуждаешь о культуре?
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
ну и вот про всю эту фигню про зарабатывание денежки
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
Не буду я спорить, а то все узнают, что я дурак.
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
.getString(key, defaultValue)
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
Мне в большинстве кейсов не надо различать эти ситуации.
Поэтому

(:some-key {})
И
({} :some-key)
И
(:some-key {:some-key nil})

Просто эвалятся в nil и никаких тебе NPE.

Это клиентоориентированный подход.

Ну а в тех редких (если не невероятных) случаях, когда тебе кровь-из-носа надо различить,  нет ключа или он есть, но под ним nil, то используй функу «contains?».


А когда тебе говорят, что если в твоём JSON какой-то ключ опциональный, то ты должен сначала проверить наличие этого ключа, потом, если он есть , проверить не равно ли значение null, и только потом попробовать вытащить строковое значение.
Это я воспринимаю как издевательство какое-то.
Можно же сделать просто и удобно, но нет! В кровавом ентерпрайзе так не принято.
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
Спасибо. Видел ведь и не попробовал.
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
все силы в rant ушли 😊
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
Да уж
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
это не в подходе дело, а ты документацию не читал :)
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
Да-да.
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
Если я документацию прочитаю, то NPE перестанет выдаваться?
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
ексепшен там выдается вполне предсказуемо, чтобы давать однозначный результат, а не подстраиваться под "клиентоориентированность"
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
Ок
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
и если прочитаешь документацию, то увидишь соседний метод, который подходит под твой случай
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
Да
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
по крайней мере, это не будет сюрпризом
String getString(String name)

A convenience method for getJsonString(name).getString()

Parameters:
   name - whose associated value is to be returned as String
Returns:
   the String value to which the specified name is mapped
Throws:
   NullPointerException - if the specified name doesn't have any mapping
   ClassCastException - if the value for specified name mapping is not assignable to JsonString
источник