You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java转换XML为JSON后如何移除JSON payload最外层ns0:TableData节点

实现方案

你直接操作转换得到的JSONObject对象取出内层节点即可,无需手动处理JSON字符串,修改后的代码如下:

String inputData = IOUtils.toString(inputstream);
System.out.println(inputData);
JSONObject xmlJSONObj = XML.toJSONObject(inputData);
// 取出外层ns0:TableData对应的内层JSONObject
JSONObject innerData = xmlJSONObj.getJSONObject("ns0:TableData");
// 直接对内层对象做格式化输出
String jsonPrettyPrintString = innerData.toString(PRETTY_PRINT_INDENT_FACTOR);
System.out.println(jsonPrettyPrintString);

如果不想硬编码外层的key(比如担心命名空间前缀会变动),也可以用通用写法取外层第一个key对应的内容:

String inputData = IOUtils.toString(inputstream);
System.out.println(inputData);
JSONObject xmlJSONObj = XML.toJSONObject(inputData);
// 通用获取外层唯一key对应的内层对象
String outerKey = xmlJSONObj.keys().next();
JSONObject innerData = xmlJSONObj.getJSONObject(outerKey);
String jsonPrettyPrintString = innerData.toString(PRETTY_PRINT_INDENT_FACTOR);
System.out.println(jsonPrettyPrintString);

最终输出的就是去掉外层节点的JSON内容:

{
    "descr": 111,
    "note": 11,
    "kpar": 1111,
    "karr": 111,
    "xmlns:ns0": "urn:it:alia:inaz",
    "codice": 1,
    "dend": 1111,
    "anz_app_a": 1,
    "dini": 11
}

内容的提问来源于stack exchange,提问作者Sushant Shinde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 05:27:00