Java中使用org.json包实现JSON转XML时如何保持元素顺序一致
问题根源
你使用的org.json库中,默认构造的JSONObject底层基于无序的HashMap存储键值对,解析JSON字符串时会直接丢失原始键的插入顺序,因此转换生成XML时元素顺序会发生偏移。
解决方案
你使用的20210307版本的org.json已经原生支持有序解析,只需要修改JSONObject的构造方式即可,不需要更换依赖:
public String convertToXml(String json) throws JSONException { // 构造方法第二个参数keepOrder传true,底层会使用LinkedHashMap保持键的插入顺序 JSONObject jsonObject = new JSONObject(json, true); String xml = XML.toString(jsonObject); return xml; }
修改后重新测试,转换生成的XML元素顺序就会和原JSON的键顺序完全一致,嵌套对象内部的键顺序也会同步保留。
补充说明
如果后续有更复杂的XML转换需求(比如自定义根节点、属性映射等),也可以切换为Jackson的XML序列化组件实现,不过当前场景下仅需修改一行代码即可解决问题。
内容的提问来源于stack exchange,提问作者lewis machilika
相关产品推荐
相关产品推荐

