Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将Json转换为Xml的最简单方法_Java_Android_Xml_Json - Fatal编程技术网

Java 将Json转换为Xml的最简单方法

Java 将Json转换为Xml的最简单方法,java,android,xml,json,Java,Android,Xml,Json,我在.net中有web服务。当我从数据库中检索数据时,它返回Android Mobile中的JSON文件。如何将JSON文件转换为XML或文本。android中没有可用于将JSON转换为XML的直接转换API。首先需要解析JSON,然后必须编写将其转换为xml的逻辑。对于一个简单的解决方案,我建议,因为它可以通过几行简单的代码将任意复杂的JSON转换为xml import org.codehaus.jackson.map.ObjectMapper; import com.fasterxml.j

我在.net中有web服务。当我从数据库中检索数据时,它返回Android Mobile中的JSON文件。如何将JSON文件转换为XML或文本。

android中没有可用于将JSON转换为XML的直接转换API。首先需要解析JSON,然后必须编写将其转换为xml的逻辑。

对于一个简单的解决方案,我建议,因为它可以通过几行简单的代码将任意复杂的JSON转换为xml

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;
}
import org.codehaus.jackson.map.ObjectMapper;
导入com.fasterxml.jackson.xml.XmlMapper;
公开课Foo
{
公共字符串名称;
公共酒吧;
公共静态void main(字符串[]args)引发异常
{
//JSON输入:{“name”:“FOO”,“bar”:{“id”:42}
字符串jsonInput=“{\'name\':\'FOO\',\'bar\':{\'id\':42}}”;
ObjectMapper jsonMapper=新的ObjectMapper();
Foo-Foo=jsonMapper.readValue(jsonInput,Foo.class);
XmlMapper XmlMapper=新的XmlMapper();
System.out.println(xmlMapper.writeValueAsString(foo));
//食物42
}
}
分类栏
{
公共int id;
}
此演示使用(较新的1.7.8也可以使用),(尚未与Jackson 1.8兼容)和。

标准类在JSON和XML之间双向转换。还有关于如何使用它的问题


转换不是很好,因为它根本不创建XML属性(仅实体),所以XML输出比可能的更大。但是它不需要定义与需要转换的数据结构相匹配的Java类。

下面是一个示例,说明如何生成有效的XML。我还在Maven项目中使用Jackson库

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>
库具有静态方法U.jsonToXml(字符串)

输出:

<?xml version="1.0" encoding="UTF-8"?>
<Price>
  <LineItems>
    <LineItem>
      <UnitOfMeasure>EACH</UnitOfMeasure>
      <Quantity number="true">2</Quantity>
      <ItemID>ItemID</ItemID>
    </LineItem>
  </LineItems>
  <Currency>USD</Currency>
  <EnterpriseCode>EnterpriseCode</EnterpriseCode>
</Price>

每个
2.
项目ID
美元
企业代码

也许您应该在UI上阅读JavaScript中的JSON并对其进行解析。(并相应地显示)。如果您必须查看并希望这将对您有所帮助。下划线-java库有一个静态方法U.jsonToXml(json)。如果我没有/不想要
Foo
或任何类怎么办?有一种通用的方法吗?我相信您可以在更高版本(如2.1.1)中使用MapNote XmlMapper包,即com.fasterxml.jackson.dataformat.xml.XmlMapper。它会生成无效的xml.dead链接。不起作用。修复了链接并添加了教程。这是一个很好且有用的答案,但如果我们能够摆脱XML输出中的XML包装或类似的XML包装,那就更好了。实际上,我们需要的是JSON到XML的精确转换。
@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);
    }
}
import com.github.underscore.lodash.U;

public class MyClass {
    public static void main(String args[]) {
        String json = "{\"Price\": {"
        + "    \"LineItems\": {"
        + "        \"LineItem\": {"
        + "            \"UnitOfMeasure\": \"EACH\", \"Quantity\": 2, \"ItemID\": \"ItemID\""
        + "        }"
        + "    },"
        + "    \"Currency\": \"USD\","
        + "    \"EnterpriseCode\": \"EnterpriseCode\""
        + "}}";
        System.out.println(U.jsonToXml(json)); 
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<Price>
  <LineItems>
    <LineItem>
      <UnitOfMeasure>EACH</UnitOfMeasure>
      <Quantity number="true">2</Quantity>
      <ItemID>ItemID</ItemID>
    </LineItem>
  </LineItems>
  <Currency>USD</Currency>
  <EnterpriseCode>EnterpriseCode</EnterpriseCode>
</Price>