guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: help with guile-json inconsistencies


From: Aleix Conchillo Flaqué
Subject: Re: help with guile-json inconsistencies
Date: Sun, 9 Dec 2018 22:33:09 -0800

On Sun, Dec 9, 2018 at 2:56 AM Aleix Conchillo Flaqué
<address@hidden> wrote:
>
> Hi guilers,
>
> a new guile-json issue came to me recently:
>
> https://github.com/aconchillo/guile-json/issues/22
>
> I don't really have a solution yet on how to solve this, so I would
> love some advice. The issue is that one can do:
>
>   (scm->json '(1 2 3)) which returns [1,2,3]
>
> however, if you do:
>
>   (scm->json '((1 2 3)) it returns {"1":[2,3]} but one would probably
> expect [[1,2,3]]
>   (scm->json '((1 2 3) (4 5 6)) it returns {"1":[2,3], "4":[5,6]} but
> one would probably expect [[1,2,3], [4,5,6]]
>
> I guess the first question is, does everyone else feel the same way
> about the return value?
>
> The problem is that there's a function that checks if something is an
> alist by basically checking if it's a pair? recursively and if so, it
> builds a json object.
>

Just to clarify, the problem is not when parsing JSON to scheme data
types, this is fine as internally guile-json uses hash tables and
lists properly.

The problem is with going from scheme to json. For convenience,
guile-json doesn't expect a hash table from the user, instead it tries
to guess what's a list and what's an alist however, that seems not
really distinguishable. That is, there's no way to tell if '((1 2)) is
[[1, 2]] or {"1" : [2]} or  {"1" : "2"}.

I guess going back to a macro approach for these type of cases would
help (even though I had the same problem with my initial macro).

Aleix



reply via email to

[Prev in Thread] Current Thread [Next in Thread]