在使用java从xml解析时,如何从json输出中删除元素或属性
我的代码是: 包项目.示例 导入org.json.JSONObject; 导入org.json.XML 公共类Xml2Json{在使用java从xml解析时,如何从json输出中删除元素或属性,java,json,xml,Java,Json,Xml,我的代码是: 包项目.示例 导入org.json.JSONObject; 导入org.json.XML 公共类Xml2Json{ {"users": { "report": { "sub": "eng", "score": 30 }, "user": { "name": "te
{"users": {
"report": {
"sub": "eng",
"score": 30
},
"user": {
"name": "test1",
"age": 20
}
}}
private static final int PRETTY\u PRINT\u INDENT\u FACTOR=4;
公共静态void main(字符串[]args){
字符串xmlString=“”;
JSONObject JSONObject=XML.toJSONObject(xmlString);
system.out.println(jsonObject)
这是我在使用java将xml解析为json时得到的输出。
现在我想从这个输出中删除age=20
谁能帮我解决这个问题?
提前感谢!考虑使用XSLT对XML进行预处理,或者类似地对JSON进行后处理 使用XSLT 3.0,您可以将结构转换和XML到JSON的转换结合到一个操作中 例如(假设XML的结构是固定的,只有值不同):
与使用标准转换实用程序(如
XML.toJSONObject
)相比,这种方法的优势在于,您可以完全控制生成的JSON。如果您不想使用XSLT,这也可以:
<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>
String-xmlString=
"";
JSONObject JSONObject=XML.toJSONObject(xmlString);
getJSONObject.getJSONObject(“用户”).getJSONObject(“用户”).remove(“年龄”);
System.out.println(jsonObject);
阅读您的上一条评论。您几乎是对的。只是顺序错了。您正在从顶部遍历JSON树。您想在解析xml后删除它,还是在解析过程中删除它?在第一种情况下,您可以使用一些字符串替换运算符。您可以发布当前代码吗?展示您所做的操作far@BartBarnard .. 我想在解析xml之后删除它…我的意思是在获得这个json之后object@aeberhart我对我的代码做了一些修改。你能看一下吗?。我以前没有这方面的经验。我不明白你说的话。请你解释一下。无论如何,谢谢你。非常感谢。但是我只能使用xml。所以这就是为什么我不能不用XSLT处理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>
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);