Allow serialization options to be configured for the JSON serializer

Ouverte
#299 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
42/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
elixir
Domaine
backend

Piste de recherche

Commencez par localiser le sérialiseur JSON configuré de Commanded et les points d’entrée de encode/decode, puis comparez-les aux options de Jason listées dans l’issue. Le travail est terminé lorsque les appelants peuvent configurer ces options et qu’elles sont transmises à la fois à encoding et à decoding sans modifier le comportement par défaut.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

It should be possible to configure encode and decode options in Commanded to be passed to the configured JSON serializer.

Jason supports the following encode and decode options.

Encode
  • :escape - controls how strings are encoded. Possible values are:
    • :json (default) - the regular JSON escaping as defined by RFC 7159.
    • :javascript_safe - additionally escapes the LINE SEPARATOR (U+2028)
      and PARAGRAPH SEPARATOR (U+2029) characters to make the produced JSON
      valid JavaSciprt.
    • :html_safe - similar to :javascript, but also escapes the /
      caracter to prevent XSS.
    • :unicode_safe - escapes all non-ascii characters.
  • :maps - controls how maps are encoded. Possible values are:
    • :strict - checks the encoded map for duplicate keys and raises
      if they appear. For example %{:foo => 1, "foo" => 2} would be
      rejected, since both keys would be encoded to the string "foo".
    • :naive (default) - does not perform the check.
  • :pretty - controls pretty printing of the output. Possible values are:
    • true to pretty print with default configuration
    • a keyword of options as specified by Jason.Formatter.pretty_print/2.
Decode
  • :keys - controls how keys in objects are decoded. Possible values are:
    • :strings (default) - decodes keys as binary strings
    • :atoms - keys are converted to atoms using String.to_atom/1
      *- :atoms! - keys are converted to atoms using String.to_existing_atom/1
  • :strings - controls how strings (including keys) are decoded. Possible values are:
    *:reference (default) - when possible tries to create a sub-binary into the original
    • :copy - always copies the strings. This option is especially useful when parts of the decoded data will be stored for a long time (in ets or some process) to avoid keeping the reference to the original data.
Langage dominant
Elixir
Étoiles
2k
Forks
257
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de commanded/commanded

Toutes les issues de commanded/commanded

Issues similaires

Plus d'issues Elixir

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.