【问题标题】:How to Convert XML to Json for array elements in java如何将 XML 转换为 Json 以获取 java 中的数组元素
【发布时间】:2021-02-04 02:56:48
【问题描述】:

我有一个将 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 并转换为预期的输出

【问题讨论】:

    标签: java json xml jackson gson


    【解决方案1】:

    根据您的 XML,json 库的输出对我来说看起来很正常。

    您的“预期输出”示例实际上缺少数据,没有提及员工。

    如果您想要那种输出,您需要先修改 XML 以删除 &lt;Employee&gt; 标记,可能使用一个简单的循环,或者您可以编写自己的 XML 解析器,忽略 &lt;Employee&gt; 标记并创建你想要的输出,但这可能非常危险。

    试试这个 XML,它应该会产生更接近你想要的东西。注意Employee 部分是如何被删除的:

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

    【讨论】:

      【解决方案2】:

      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());
              }
          }
      }
      

      【讨论】:

      • 你也可以从 underscore-java 库中调用 xmlToJson。
      猜你喜欢
      • 2017-09-30
      • 1970-01-01
      • 1970-01-01
      • 2016-06-09
      • 2019-04-25
      • 2021-08-11
      • 2022-08-24
      • 2020-01-26
      • 1970-01-01
      相关资源
      最近更新 更多