JsonConvert.DeserializeXmlNode: debe comenzar con un objeto

Recibo una excepción JsonSerializationException que llama a DeserializeXmlNode() en datos JSON que comienzan con [[ (es decir, es una matriz de matrices).

¿Qué es lo mejor

  1. manera de convertir esto en XML?
  2. ¿Hay otros esquemas JSON que no se puedan convertir en XML?

Actualizar: Cómo debería aparecer el XML es una pregunta interesante. Tener una matriz de matrices significa que no hay un nodo raíz (eso es fácil: insertar), pero también el conjunto de nodos secundarios no tiene nombre. No estoy seguro de qué tiene sentido aquí. Y esto puede ser un factor decisivo para usar XPath en JSON. Así que en esta parte también, ¿alguna sugerencia?

actualización 2 - los datos JSON:

[["P0010001","NAME","state"],
["4779736","Alabama","01"],
["710231","Alaska","02"],
["6392017","Arizona","04"],
["2915918","Arkansas","05"],
["37253956","California","06"],
["5029196","Colorado","08"],
["3574097","Connecticut","09"],
["897934","Delaware","10"],
["601723","District of Columbia","11"],
["18801310","Florida","12"],
["9687653","Georgia","13"],
["1360301","Hawaii","15"],
["1567582","Idaho","16"],
["12830632","Illinois","17"],
["6483802","Indiana","18"],
["3046355","Iowa","19"],
["2853118","Kansas","20"],
["4339367","Kentucky","21"],
["4533372","Louisiana","22"],
["1328361","Maine","23"],
["5773552","Maryland","24"],
["6547629","Massachusetts","25"],
["9883640","Michigan","26"],
["5303925","Minnesota","27"],
["2967297","Mississippi","28"],
["5988927","Missouri","29"],
["989415","Montana","30"],
["1826341","Nebraska","31"],
["2700551","Nevada","32"],
["1316470","New Hampshire","33"],
["8791894","New Jersey","34"],
["2059179","New Mexico","35"],
["19378102","New York","36"],
["9535483","North Carolina","37"],
["672591","North Dakota","38"],
["11536504","Ohio","39"],
["3751351","Oklahoma","40"],
["3831074","Oregon","41"],
["12702379","Pennsylvania","42"],
["1052567","Rhode Island","44"],
["4625364","South Carolina","45"],
["814180","South Dakota","46"],
["6346105","Tennessee","47"],
["25145561","Texas","48"],
["2763885","Utah","49"],
["625741","Vermont","50"],
["8001024","Virginia","51"],
["6724540","Washington","53"],
["1852994","West Virginia","54"],
["5686986","Wisconsin","55"],
["563626","Wyoming","56"],
["3725789","Puerto Rico","72"]]

preguntado el 12 de junio de 12 a las 18:06

¿Cómo esperaría que se viera el XML resultante? -

Muy buena pregunta: respondí con una actualización anterior. -

@LB: quiero usar XPath. No existe un estándar claro para ejecutar correctamente una consulta en mapas JSON y XPath, excepto por este problema. Si hubiera un lenguaje de consulta claro para JSON, lo usaría felizmente. -

¿Puedes mostrar algún json de muestra? -

Sí, el enlace thedataweb.rm.census.gov/data/2010/sf1?key=d30412623269142547bfbe8210b8dd01af55c9ce&get=P0010001,NAME&for=state:* muestra este tipo de JSON (sin http porque S/O obtiene el enlace incorrecto) -

1 Respuestas

Tenía una serie de objetos, con forma de:

[{foo:bar}, {foo:bar2}]

... Lo que hice para solucionar este problema fue envolver el texto primero así:

public XmlDocument JsonArrayToXml(string json)
{
    var wrappedDocument = string.Format("{{ item: {0} }}", json);
    var xDocument = JsonConvert.DeserializeXmlNode(wrappedDocument, "collection");
    return xDocument;
}

Esto no arroja un error. La forma del XML se parece a:

<?xml version="1.0" encoding="UTF-8"?>
<collection>
    <item>
        <foo>bar</foo>
    </item>
    <item>
        <foo>bar2</foo>
    </item>
</collection>

Respondido el 24 de diciembre de 14 a las 13:12

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.