Сериализация рубинового хэша в json с сериализованными именами. - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть хеш, который выглядит следующим образом:

require 'json'
h = {  :foo => 1, :bar => 1 }
h.to_json # will do '{ "foo" : 1, "bar" 1 }'

Лучший способ, который я нашел, это переписать и сериализовать: https://stackoverflow.com/a/4137966/887836

В Java есть аннотация для переименования"foo" в "Foo", чтобы получить конкретный сериализованный вид.Есть ли стандартный способ сделать это в ruby?Я бы предпочел декларативный способ указать это, если это возможно.

public class MyClass {
  @SerializedName("Foo") String foo;

  public MyClass(String foo) {
    this.foo = foo;
  }
}

1 Ответ

1 голос
/ 06 апреля 2019

Я думаю, что в своем вопросе вы сравниваете "яблоки" с "апельсинами". В случае Java у вас есть класс, который вы определяете, в который вы можете добавлять аннотации. Эти аннотации могут затем использоваться библиотекой, такой как gson, для настройки сериализации экземпляров этого класса.

В случае с ruby ​​вы говорите о экземплярах встроенного класса (Hash), который вы не можете свободно комментировать (если только вы не хотите использовать Hash).

Если вы создадите пользовательский класс для представления ваших экземпляров Hash, вы откроете больше опций, таких как переопределение метода .to_json для ваших классов или даже реализация собственной схемы деларива, такой как предоставление хэша сопоставления в вашем классе.

Если вы хотите сохранить ваши данные в качестве экземпляров хэша, то, я думаю, вам следует придерживаться различных преобразований, которые вы обнаружили и предложили в комментариях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...