Skip to content

nil as a key in map throws an Exception #57

Open
@DeLaGuardo

Description

I'm getting an exception trying to write to string a map with nil as a key.

(jsonista.core/write-value-as-string {nil 1}) ;; => throws com.fasterxml.jackson.databind.JsonMappingException

1. Unhandled com.fasterxml.jackson.databind.JsonMappingException
   Null key for a Map not allowed in JSON (use a converting NullKeySerializer?)
   (through reference chain: clojure.lang.PersistentArrayMap["null"])

 JsonMappingException.java:  281  com.fasterxml.jackson.databind.JsonMappingException/from
   SerializerProvider.java: 1336  com.fasterxml.jackson.databind.SerializerProvider/mappingException
   SerializerProvider.java: 1230  com.fasterxml.jackson.databind.SerializerProvider/reportMappingProblem
    FailingSerializer.java:   32  com.fasterxml.jackson.databind.ser.impl.FailingSerializer/serialize
        MapSerializer.java:  791  com.fasterxml.jackson.databind.ser.std.MapSerializer/serializeFields
        MapSerializer.java:  764  com.fasterxml.jackson.databind.ser.std.MapSerializer/serializeWithoutTypeInfo
        MapSerializer.java:  720  com.fasterxml.jackson.databind.ser.std.MapSerializer/serialize
        MapSerializer.java:   35  com.fasterxml.jackson.databind.ser.std.MapSerializer/serialize
DefaultSerializerProvider.java:  480  com.fasterxml.jackson.databind.ser.DefaultSerializerProvider/_serialize
DefaultSerializerProvider.java:  319  com.fasterxml.jackson.databind.ser.DefaultSerializerProvider/serializeValue
         ObjectMapper.java: 4487  com.fasterxml.jackson.databind.ObjectMapper/_writeValueAndClose
         ObjectMapper.java: 3742  com.fasterxml.jackson.databind.ObjectMapper/writeValueAsString
                  core.clj:  238  jsonista.core/write-value-as-string
                  core.clj:  233  jsonista.core/write-value-as-string
                      REPL:   10  clojud.utils.kafka/eval82873
                      REPL:   10  clojud.utils.kafka/eval82873
             Compiler.java: 7177  clojure.lang.Compiler/eval
             Compiler.java: 7132  clojure.lang.Compiler/eval
                  core.clj: 3214  clojure.core/eval
                  core.clj: 3210  clojure.core/eval
    interruptible_eval.clj:   87  nrepl.middleware.interruptible-eval/evaluate/fn/fn
                  AFn.java:  152  clojure.lang.AFn/applyToHelper
                  AFn.java:  144  clojure.lang.AFn/applyTo
                  core.clj:  665  clojure.core/apply
                  core.clj: 1973  clojure.core/with-bindings*
                  core.clj: 1973  clojure.core/with-bindings*
               RestFn.java:  425  clojure.lang.RestFn/invoke
    interruptible_eval.clj:   87  nrepl.middleware.interruptible-eval/evaluate/fn
                  main.clj:  437  clojure.main/repl/read-eval-print/fn
                  main.clj:  437  clojure.main/repl/read-eval-print
                  main.clj:  458  clojure.main/repl/fn
                  main.clj:  458  clojure.main/repl
                  main.clj:  368  clojure.main/repl
               RestFn.java: 1523  clojure.lang.RestFn/invoke
    interruptible_eval.clj:   84  nrepl.middleware.interruptible-eval/evaluate
    interruptible_eval.clj:   56  nrepl.middleware.interruptible-eval/evaluate
    interruptible_eval.clj:  152  nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn
                  AFn.java:   22  clojure.lang.AFn/run
               session.clj:  202  nrepl.middleware.session/session-exec/main-loop/fn
               session.clj:  201  nrepl.middleware.session/session-exec/main-loop
                  AFn.java:   22  clojure.lang.AFn/run
               Thread.java:  829  java.lang.Thread/run

I tried to set :encode-key-fn option but with the same result. Looks like my function is not executed at all.

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions