Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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从xml解析时,如何从json输出中删除元素或属性_Java_Json_Xml - Fatal编程技术网

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

在使用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

我的代码是:

包项目.示例

导入org.json.JSONObject; 导入org.json.XML

公共类Xml2Json{

{"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);