Tengo servicio web en .net. Cuando recupero datos de la base de datos, devuelve el archivo JSON en Android Mobile. ¿Cómo puedo convertir archivos JSON a XML o texto?Método más simple para convertir Json a Xml
Respuesta
No hay API de conversión directa disponible en Android para convertir JSON a XML. Primero debe analizar JSON y luego escribir la lógica para convertirlo a xml.
Para una solución simple, recomiendo Jackson, ya que puede transformar JSON arbitrariamente complejo en XML con solo unas pocas líneas simples de código.
import org.codehaus.jackson.map.ObjectMapper;
import com.fasterxml.jackson.xml.XmlMapper;
public class Foo
{
public String name;
public Bar bar;
public static void main(String[] args) throws Exception
{
// JSON input: {"name":"FOO","bar":{"id":42}}
String jsonInput = "{\"name\":\"FOO\",\"bar\":{\"id\":42}}";
ObjectMapper jsonMapper = new ObjectMapper();
Foo foo = jsonMapper.readValue(jsonInput, Foo.class);
XmlMapper xmlMapper = new XmlMapper();
System.out.println(xmlMapper.writeValueAsString(foo));
// <Foo xmlns=""><name>FOO</name><bar><id>42</id></bar></Foo>
}
}
class Bar
{
public int id;
}
Esta demostración se utiliza Jackson 1.7.7 (la más reciente 1.7.8 También hay que trabajar), Jackson XML Databind 0.5.3 (todavía no compatibles con Jackson 1,8), y Stax2 3.1.1.
¿Qué pasa si no tengo/no quiero 'Foo' o cualquier clase? ¿Hay una manera genérica? –
La clase org.json.XML estándar convierte entre JSON y XML en ambas direcciones.
La conversión no es muy buena ya que no crea atributos XML (solo entidades), por lo que la salida XML es más voluminosa de lo que podría ser. Pero no requiere definir clases Java que coincidan con las estructuras de datos que deben convertirse.
Genera XML no válido. –
Aquí hay un ejemplo de cómo puede hacerlo, generando XML válido. También uso la biblioteca Jackson en un proyecto Maven.
instalación de Maven:
<!-- https://mvnrepository.com/artifact/com.fasterxml/jackson-xml-databind -->
<dependency>
<groupId>com.fasterxml</groupId>
<artifactId>jackson-xml-databind</artifactId>
<version>0.6.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.6</version>
</dependency>
Aquí hay un código Java que primero convierte una cadena JSON a un objeto y luego convierte el objeto con el XMLMapper a XML y también elimina cualquier nombres de los elementos equivocados. La razón para reemplazar caracteres incorrectos en nombres de elementos XML es el hecho de que puede usar nombres de elementos JSON como $ oid con caracteres no permitidos en XML. La biblioteca de Jackson no explica eso, así que terminé agregando un código que elimina caracteres ilegales de los nombres de los elementos y también las declaraciones del espacio de nombres.
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.xml.XmlMapper;
import java.io.IOException;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Converts JSON to XML and makes sure the resulting XML
* does not have invalid element names.
*/
public class JsonToXMLConverter {
private static final Pattern XML_TAG =
Pattern.compile("(?m)(?s)(?i)(?<first><(/)?)(?<nonXml>.+?)(?<last>(/)?>)");
private static final Pattern REMOVE_ILLEGAL_CHARS =
Pattern.compile("(i?)([^\\s=\"'a-zA-Z0-9._-])|(xmlns=\"[^\"]*\")");
private ObjectMapper mapper = new ObjectMapper();
private XmlMapper xmlMapper = new XmlMapper();
String convertToXml(Object obj) throws IOException {
final String s = xmlMapper.writeValueAsString(obj);
return removeIllegalXmlChars(s);
}
private String removeIllegalXmlChars(String s) {
final Matcher matcher = XML_TAG.matcher(s);
StringBuffer sb = new StringBuffer();
while(matcher.find()) {
String elementName = REMOVE_ILLEGAL_CHARS.matcher(matcher.group("nonXml"))
.replaceAll("").trim();
matcher.appendReplacement(sb, "${first}" + elementName + "${last}");
}
matcher.appendTail(sb);
return sb.toString();
}
Map<String, Object> convertJson(String json) throws IOException {
return mapper.readValue(json, new TypeReference<Map<String, Object>>(){});
}
public String convertJsonToXml(String json) throws IOException {
return convertToXml(convertJson(json));
}
}
Aquí está una prueba unitaria para convertJsonToXml:
@Test
void convertJsonToXml() throws IOException, ParserConfigurationException, SAXException {
try(InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("json/customer_sample.json")) {
String json = new Scanner(in).useDelimiter("\\Z").next();
String xml = converter.convertJsonToXml(json);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new ByteArrayInputStream(xml.getBytes("UTF-8")));
Node first = doc.getFirstChild();
assertNotNull(first);
assertTrue(first.getChildNodes().getLength() > 0);
}
}
- 1. Convertir XML a formato JSON
- 2. Forma más rápida de convertir XML a JSON en Java
- 3. cómo convertir XML a JSON usando jQuery
- 4. ¿Cómo puedo convertir Xml a Json y viceversa en C#
- 5. convertir resultado mysqli a json
- 6. Convertir matriz a JSON
- 7. Convertir objeto Scala a XML
- 8. Biblioteca PHP para convertir JSON a CSV?
- 9. Cómo convertir XML (SOAP) a objeto JSON por JavaScript
- 10. Convertir XML a psobject
- 11. ¿Hay alguna forma de convertir json a xml en PHP?
- 12. ¿Cómo puedo convertir JSON a XML en Ruby?
- 13. XML a JSON con Scala
- 14. Convierta un shapefile (.shp) a xml/json
- 15. convertir rss a JSON
- 16. Convertir NSData a JSON
- 17. Python - ¿Qué es más rápido para analizar Json o XML?
- 18. Convertir xml a Java Bean
- 19. Convertir JSON para DataTable
- 20. XML vs YAML frente a JSON para un RPG 2D
- 21. script php para convertir xml a dtd
- 22. Convertir IQueryable genérico para JSON
- 23. Método más simple/más eficiente de anidar si ... ¿otro flujo?
- 24. Conversión dinámica de XML a JSON
- 25. cómo convertir JSON a cadena
- 26. ¿Serializar un objeto a JSON, XML, YAML?
- 27. Convertir JSON alimentación a NSDictionary
- 28. ¿Método para convertir lienzo HTML5 a SVG?
- 29. Método para convertir de org.joda.time.DateTime a java.util.Calendar
- 30. ¿Cómo puedo convertir un archivo xml en JSON usando Python?
puede ser usted debe leer JSON en JavaScript en su interfaz de usuario y analizarlo. (y mostrar en consecuencia). Si debe ver [aquí] (http://www.webmasterworld.com/javascript/3540648.htm) – Nishant
JSON ** es ** texto. –
Mire en [esto] (http://stackoverflow.com/questions/559296/java-implementation-of-json-to-xml-conversion) y [this] (http://www.discursive.com/books/ cjcook/reference/json-sect-convert-json-xml) Espero que esto te ayude. – Sandy