Skip to content

cjson encode table encodes / #66

Open

Description

@ktalebian

Doing:

cjson.encode({url =  "https://google.com})

prints {"url":"https:\/\/google.com"}. I'm trying to stringify a JSON object here, and don't expect to get the / escaped. Is there any solution?

Activity

  1. dorongold commented on Sep 5, 2019

    @dorongold

    We have a similar issue.
    Can cjson provide an option to disable escaping of forward slashes?

    The JSON spec says you CAN escape forward slash, but you don't have to.
    We have some 3rd-party json clients that consume the output of cjson.encode, but do not work correctly with escaped forward slashes.
    Also, in many programming languages, json encoders by default do not escape forward slashes.

  2. eyalleshem commented on Jan 27, 2020

    @eyalleshem

    same issue for me -
    any work-around for that ?

  3. Jijun commented on Mar 13, 2020

    @Jijun
  4. MorseWayne commented on Mar 21, 2020

    @MorseWayne

    #57

    dont expect to much, just do it yourself, this pull request is really helpful

  5. jesse-greathouse commented on May 15, 2020

    @jesse-greathouse

    If anyone else is troubled by the escaped forward slash, thanks to #57 for showing me the solution, this is what I've been doing to apply the fix before lua-cjson is compiled. My example is in the context of openresty but the operative line is the sed replacement

    # Compile and Install Openresty
    tar -xzf ${OPT}/openresty-*.tar.gz -C ${OPT}/
    
    # Fix the escape frontslash feature of cjson
    sed -i -e s/"    NULL, NULL, NULL, NULL, NULL, NULL, NULL, \"\\\\\\\\\/\","/"    NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,"/g ${OPT}/openresty-*/bundle/lua-cjson-2.1.0.7/lua_cjson.c
    
    cd ${OPT}/openresty-*/
    ./configure --with-cc-opt="-I/usr/local/include -I/usr/local/opt/openssl/include" \
                --with-ld-opt="-L/usr/local/lib -L/usr/local/opt/openssl/lib" \
                --prefix=${OPT}/openresty \
                --with-pcre-jit \
                --with-ipv6 \
                --with-http_iconv_module \
                --with-http_realip_module \
                -j2 && \
    make
    make install
    
  6. aljungberg commented on Jan 25, 2021

    @aljungberg

    For what it's worth, openresty's fork of cjson solves this problem: https://github.com/openresty/lua-cjson/#encode_escape_forward_slash

  7. MEZboy commented on May 20, 2021

    @MEZboy

    For what it's worth, openresty's fork of cjson solves this problem: https://github.com/openresty/lua-cjson/#encode_escape_forward_slash

    thanks a lot, this helped me, a huge hug for you~

  8. mpx commented on Jun 8, 2021

    @mpx
    Owner

    To help understand the impact a bit better, does anyone have examples where decodes or APIs break with:

    • escaped forward slash?
    • non-escaped forward slash?
      If so, which ones?

    If there is a clearly better choice we should just do that and avoid adding another configuration option. It sounds like Lua CJSON is an outlier here, and there would be fewer issues if it didn't escape forward slash.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions