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
相关产品推荐
相关产品推荐

