Subject: 27.2; json-parse-string fails to parse embeded strings
From: Thierry Volpiatto <[email-masked]>
To: [email-masked]
Date: Mon, 20 Dec 2021 19:43:06 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello,

in a json output, I have a string containing a string like this:

    "Cime du Pied de Barry : \\"Arêtissime\\""

json-parse-string fails on this with:

    (json-parse-error "'}' expected near 'Ar'" "<string>" 1 203819 204500)

You can see the representation of this string in the title of this
webpage: https://skitour.fr/topos/8583

When I modify the string like this:

    "Cime du Pied de Barry : Arêtissime"

The string is parsed normally with no errors.

So I wonder if it is a bug in json-parse-string which fails on such
string or in the API of the website itself which should not provide such
string in their json output.

Thanks.

In GNU Emacs 27.2 (build 3, x86_64-pc-linux-gnu, GTK+ Version 3.24.20, cairo version 1.16.0)
 of 2021-11-25 built on IPad-S340
Windowing system distributor 'The X.Org Foundation', version 11.0.12013000
System Description: Linux Mint 20.2

Recent messages:
Checking 2 files in ~/elisp/desktop-file-utils...
Checking 2 files in ~/elisp/tex-utils...
Checking 43 files in ~/elisp/helm-extensions...
Checking 23 files in ~/.emacs.d/themes...
Checking 14 files in ~/.emacs.d/emacs-config...
Checking for load-path shadows...done
Mark set
Message modified; kill anyway? (y or n) y
[mu4e] Switch to Posteo
[mu4e] Switched context to Posteo

Configured using:
 'configure CFLAGS=-O8 --with-mailutils --with-cairo'

Configured features:
XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND GPM DBUS GSETTINGS GLIB NOTIFY
INOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE HARFBUZZ M17N_FLT LIBOTF
ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS LIBSYSTEMD
JSON PDUMPER LCMS2 GMP

Important settings:
  value of $LANG: fr_FR.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Ilisp

Minor modes in effect:
  global-undo-tree-mode: t
  undo-tree-mode: t
  psession-mode: t
  psession-savehist-mode: t
  global-git-gutter-mode: t
  display-time-mode: t
  winner-mode: t
  show-paren-mode: t
  helm-epa-mode: t
  helm-descbinds-mode: t
  helm-adaptive-mode: t
  helm-mode: t
  helm-minibuffer-history-mode: t
  shell-dirtrack-mode: t
  helm-popup-tip-mode: t
  async-bytecomp-package-mode: t
  dired-async-mode: t
  minibuffer-depth-indicate-mode: t
  override-global-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
/home/thierry/.emacs.d/elpa/seq-2.23/seq hides /usr/local/share/emacs/27.2/lisp/emacs-lisp/seq

Features:
(epa-mail face-remap addressbook-bookmark mu4e-config org-mu4e
mu4e-contrib mu4e-patch mu4e mu4e-org mu4e-view gnus-art mm-uu mml2015
mm-view mml-smime smime dig gnus-sum gnus-group gnus-undo gnus-start
gnus-cloud nnimap nnmail mail-source utf7 netrc nnoo gnus-spec gnus-int
gnus-range gnus-win mu4e-main mu4e-headers mu4e-lists mu4e-compose
mu4e-draft mu4e-actions smtpmail mu4e-search mu4e-bookmarks mu4e-mark
mu4e-message shr svg dom flow-fill hl-line mu4e-contacts mu4e-update
mu4e-folders mu4e-server mu4e-context mu4e-vars mu4e-helpers ido
mu4e-meta shadow sort mail-extr emacsbug sendmail helm-ring cl-print
eieio-opt speedbar sb-image ezimage dframe help-fns radix-tree
smerge-mode helm-x-files helm-for-files helm-bookmark bookmark pp
helm-skitour tramp-archive tramp-gvfs zeroconf dbus helm-command
sh-script smie executable flymake-proc flymake warnings markdown-mode
vc-filewise vc-rcs conf-mode ledger-config ledger-mode ledger-check
ledger-texi ledger-test ledger-sort ledger-report ledger-reconcile
ledger-occur ledger-fonts ledger-fontify ledger-state ledger-complete
ledger-schedule ledger-init ledger-xact ledger-post ledger-exec
ledger-navigate eshell esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg
esh-module esh-groups esh-util ledger-context ledger-commodities
ledger-regex rx bug-reference naquadah-theme view solar cal-dst holidays
hol-loaddefs tv-utils yaml-mode undo-tree diff rainbow-mode color
psession frameset log-view pcvs-util pcmpl-git cl-indent ffap thingatpt
autocrypt-message message rmc puny rfc822 mml mml-sec mm-decode
mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader
autocrypt-gnus gnus nnheader gnus-util rmail rmail-loaddefs rfc2047
rfc2045 text-property-search mail-utils mm-util mail-prsvr
autocrypt-mu4e autocrypt ietf-drums config-w3m git-gutter mule-util appt
diary-lib diary-loaddefs gud pcomplete-extension pcmpl-unix pcmpl-gnu
iterator pcase wdired dired-extension org-config ob-gnuplot org-crypt
net-utils time all-the-icons all-the-icons-faces data-material
data-weathericons data-octicons data-fileicons data-faicons
data-alltheicons winner autotest-mode autoconf-mode paren woman man
ediff ediff-merg ediff-mult ediff-wind ediff-diff ediff-help ediff-init
ediff-util init-helm helm-ls-git vc-git diff-mode vc vc-dispatcher
helm-fd epa derived epg epg-config helm-epa helm-imenu imenu
helm-elisp-package helm-find helm-org org ob ob-tangle ob-ref ob-lob
ob-table ob-exp org-macro org-footnote org-src ob-comint org-pcomplete
org-list org-faces org-entities noutline outline org-version
ob-emacs-lisp ob-core ob-eval org-table ol org-keys org-compat advice
org-macs org-loaddefs cal-menu calendar cal-loaddefs helm-external
helm-net xml url url-proxy url-privacy url-expand url-methods
url-history url-cookie url-domsuf url-util mailcap isearch-light
helm-descbinds cus-edit wid-edit helm-ipython helm-elisp helm-eval
edebug backtrace find-func helm-info python tramp-sh helm-adaptive
helm-mode helm-misc helm-files image-mode exif filenotify tramp
tramp-loaddefs trampver tramp-integration files-x tramp-compat shell
pcomplete parse-time iso8601 time-date ls-lisp helm-buffers helm-occur
helm-tags helm-locate helm-grep wgrep-helm wgrep grep compile comint
ansi-color ring helm-regexp format-spec helm-utils helm-help helm-types
helm-extensions-autoloads helm-config helm-autoloads helm async-bytecomp
helm-global-bindings helm-easymenu helm-source helm-multi-match helm-lib
dired-async dired-aux dired dired-loaddefs async popup diminish cl-extra
help-mode mb-depth server edmacro kmacro avoid cus-start cus-load
use-package use-package-ensure use-package-delight use-package-diminish
use-package-bind-key bind-key easy-mmode use-package-core info w3m-load
package easymenu browse-url url-handlers url-parse auth-source cl-seq
eieio eieio-core cl-macs eieio-loaddefs password-cache json subr-x map
url-vars seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib
tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type
mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image
regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode
lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch
timer select scroll-bar mouse jit-lock font-lock syntax facemenu
font-core term/tty-colors frame minibuffer cl-generic cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese composite charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray
cl-preloaded nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote threads dbusbind
inotify lcms2 dynamic-setting system-font-setting font-render-setting
cairo move-toolbar gtk x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 537996 144249)
 (symbols 48 37362 29)
 (strings 32 152333 24708)
 (string-bytes 1 4614245)
 (vectors 16 68247)
 (vector-slots 8 1538301 164608)
 (floats 8 1633 373)
 (intervals 56 7579 1606)
 (buffers 1000 123))
<#secure method=pgpmime mode=sign>

-- 
Thierry