如何使用 java 从 xml 解析时从 json 输出中删除元素或属性


{"users": {
"report": {
"sub": "eng",
"score": 30
},
"user": {
"name": "test1",
"age": 20
}
}}

我的代码是:

包项目示例;

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

公共类 Xml2Json {

private static final int PRETTY_PRINT_INDENT_FACTOR = 4;
public static void main(String[] args) {

String xmlString = "<users><user name=test1 age=20></user><report sub=eng score=30></report></users>";
JSONObject jsonObject = XML.toJSONObject(xmlString);

system.out.println(jsonObject(;

这是我使用 Java 将 XML 解析为 JSON 时得到的输出。 现在我想从此输出中删除年龄= 20。

谁能帮我解决这个问题? 提前感谢!

考虑使用 XSLT 预处理 XML,或类似地对 JSON 进行后处理。

使用 XSLT 3.0,您可以将结构转换和 XML 到 JSON 转换合并到单个操作中。

例如(假设 XML 的结构是固定的,只有值会发生变化(:

<xsl:transform version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="json"/>
<xsl:template match="/">
<xsl:sequence select='
map{"users": map {
"report": map {
"sub": string(/users/report/@sub),
"score": string(/users/report/@score)
},
"user": map {
"name": string(/users/user/@name)
}
}}'/>
</xsl:template>
</xsl:transform>

与使用标准转换实用程序(如XML.toJSONObject(相比,此方法的优势在于您可以完全控制生成的 JSON。

如果您不想使用 XSLT,这也可以使用:

String xmlString =
"<users><user name=test1 age=20></user><report sub=eng score=30></report></users>";
JSONObject jsonObject = XML.toJSONObject(xmlString);
jsonObject.getJSONObject("users").getJSONObject("user").remove("age");
System.out.println(jsonObject);

阅读您的最后一条评论。 你几乎是对的。只是顺序错了。您正在从顶部遍历 JSON 树。

最新更新