gson 如何在java中将XML转换为数组元素的Json

xxslljrj  于 2022-11-06  发布在  Java
关注(0)|答案(2)|浏览(203)

我有一个将xml有效负载转换为json有效负载的用例。我尝试使用org.json库,但它没有提供预期的输出。
范例:XML

<Employees>
<Employee>
<FirstName>abc</FirstName>
<LastName>xyz></LastName>
</Employee>
<Employee>
<FirstName>pqr</FirstName>
<LastName>def></LastName>
</Employee>
</Employees>

预期产出:

{
Employees:[
{
FirstName:abc,
LastName:xyz
},
{
FirstName:pqr,
LastName:def
}
]
}

当我尝试使用org.json时,下面是输出。

{
Employees:{
Employee:[
{
FirstName:abc,
LastName:xyz
},
{
FirstName:pqr,
LastName:def
}
]
}
}

我如何将XML转换为预期Json有没有其他方法可以使用上述XML并转换为预期输出

0s0u357o

0s0u357o1#

基于您的XML,json库的输出在我看来相当正常。
您的“预期输出”示例实际上缺少数据,没有对employee的引用。
如果您想要这种输出,您需要首先修改XML以删除<Employee>标记(可能使用一个简单的循环),或者您可以编写自己的XML解析器,忽略<Employee>标记并创建所需的输出,但这可能非常危险。
试试这个XML,它应该会产生更接近你想要的东西。注意Employee部分是如何被删除的:

<root>
    <Employees>
        <FirstName>abc</FirstName>
        <LastName>xyz></LastName>
    </Employees>
    <Employees>
        <FirstName>pqr</FirstName>
        <LastName>def></LastName>
    </Employees>
</root>
wgxvkvu9

wgxvkvu92#

Maven依赖项:

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20201115</version>
</dependency>

你能试试下面这个吗?

import org.json.JSONObject;
import org.json.XML;
import org.json.JSONException;

public class Main {

    public static int PRETTY_PRINT_INDENT_FACTOR = 4;
    public static String TEST_XML_STRING =
            "<?xml version=\"1.0\" ?><Employees>"
            + "<Employee>"
            + "<FirstName>abc</FirstName>"
            + "<LastName>xyz</LastName>"
            + "</Employee>"
            + "<Employee>"
            + "<FirstName>pqr</FirstName>"
            + "<LastName>def</LastName>"
            + "</Employee>"
            + "</Employees>";

    public static void main(String[] args) {
        try {
            JSONObject xmlJSONObj = XML.toJSONObject(TEST_XML_STRING);
            JSONObject employees = xmlJSONObj.getJSONObject("Employees");

            Object employee = employees.get("Employee");
            xmlJSONObj.put("Employees", employee);

            String jsonPrettyPrintString = xmlJSONObj.toString(PRETTY_PRINT_INDENT_FACTOR);
            System.out.println(jsonPrettyPrintString);
        } catch (JSONException je) {
            System.out.println(je.toString());
        }
    }
}

相关问题