Saltar al contenido

¿Cómo puedo crear un objeto JSON vacío?

Investigamos por todo el mundo online para así mostrarte la respuesta para tu problema, si tienes inquietudes puedes dejarnos tu inquietud y te contestaremos con gusto, porque estamos para ayudarte.

Solución:

Puede definir su propio objeto y decirle a Mathematica que lo interprete como un objeto JSON.

Exportación ficticia para cargar contextos relevantes:

In[1]:= ExportString["", "JSON"];

Dígale a Mathematica que interprete JSONObject símbolo como posible cabeza de objetos JSON:

In[2]:= ClearAll[JSONObject]
         System`Convert`JSONDump`$JSONObjectHead = JSONObject;

Ahora puedes usar JSONObject en cualquier lugar de la expresión exportada:

In[4]:= ExportString[JSONObject[], "JSON"]
Out[4]= 

In[5]:= ExportString["a" -> JSONObject[], "JSON"]
Out[5]= "a" : 

In[6]:= ExportString[JSONObject["a" -> JSONObject["b" -> Null]], "JSON"]
Out[6]= "a" : "b" : null

Cómo funciona

La exportación interna a JSON está a cargo de System`Convert`JSONDump`exportJSON función que es solo un envoltorio para System`Convert`JSONDump`iexportJSON. Este último llama System`Convert`JSONDump`toString que hace la conversión real y, entre otras, incluye las siguientes definiciones (System`Convert`JSONDump` contexto eliminado de los nombres de los símbolos):

toString[x_?($JSONObjectHead =!= List && MatchQ[#1, $JSONObjectHead[]]&), `t_Integer] := 

toString[x_?($JSONObjectHead =!= List && Head[#1] === $JSONObjectHead && Length[#1] =!= 0&), t_Integer] := toString[List @@ x, t]

ese uso $JSONObjectHead.

Cómo averiguarlo, cómo funciona la exportación

Puede comenzar rastreando la evaluación de la expresión de exportación:

TracePrint[
    ExportString["mySpecialString", "JSON"],
    _[___, "mySpecialString", ___]
]

Encontrarás eso System`Convert`JSONDump` El contexto parece interesante. Para obtener una descripción general rápida de sus símbolos, puede consultar:

Names["System`Convert`JSONDump`*"] // TableForm

La verdadera diversión comenzará si usas esta gran herramienta de espeleología:

Get["https://raw.githubusercontent.com/szhorvat/Spelunking/master/Spelunking.m"]

Elija una función, de la traza impresa que parezca prometedora:

Spelunk["System`Convert`JSONDump`exportJSON"]

y profundice más haciendo clic en los enlaces a las funciones que ve en el seguimiento.

Acerca de la herramienta de espeleología que aprendí de una de las respuestas de halirutans.

Para versiones más nuevas que exportan un archivo vacío Association hace lo que quieres:

ExportString[<||>, "JSON"]

Versiones más nuevas significa que las versiones >= 10.1, 10.0.x se exportaron vacías Associations a listas vacías, por supuesto, el nuevo comportamiento es mucho mejor para la distinción de listas vacías de JavaScript y objetos en Mathematica…

Como mencionó Kuba en un comentario, el formato de exportación “JSON” tiene algunas deficiencias que se superan con el formato de exportación “RawJSON”, que parece funcionar mejor que “JSON” en muchos aspectos, especialmente cuando se trabaja con Asociaciones…

El ejemplo de Kubas donde “JSON” da un error mientras que “RawJSON” funciona como se esperaba fue:

ExportString[<|"test" -> <||>|>, "RawJSON"]

Reseñas y valoraciones del tutorial

Te invitamos a avalar nuestra ocupación añadiendo un comentario o puntuándolo te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *