java中的XML到JSON转换

时间:2011-06-09 18:10:17

标签: java xml json

我知道几个将XML转换为JSON的开源java库。

但是,我正在寻找一个库(或方法),它将抑制元素属性前面的前导@。因此,例如,给定下面的JSON字符串:

{ "description":
      { "@lang":"en-us",
        "@maxlength":"500",
        "#text":"Vitamin D Supplementation"
      }
}

我想生成以下JSON字符串(注意“lang”和“maxlength”前面缺少的@):

{ "description":
      { "lang":"en-us",
        "maxlength":"500",
        "#text":"Vitamin D Supplementation"
      }
}

据我所知,没有图书馆提供这样做的方法。也许有一种方法可以使用正则表达式实现这一点,但我必须小心不要在数据中剥离有效的@字符?

1 个答案:

答案 0 :(得分:1)

String.replace("\"@", "\"")还是什么?

<强>更新

要防止在字符串值中替换@,可以使用regexp version of replace。你会找到前面带有“并且前面没有X的@符号,其中X是冒号(:)后跟任意数量的空格。你将被”再次“替换。

一种不太常见的方法是以类似内容事件的方式使json库流,捕获任何对象成员名称事件,替换以@开头的成员名称,然后将它们返回到事件流。然后,该流将再次转换为JSON文本。 (我目前正在开发一个提供此类功能的库,但遗憾的是它尚未发布。)

同样,您可以在XML到JSON转换过程中挂钩。转换器必须将XML流式传输到某种XML内容事件,这些事件稍后会转换为JSON内容事件,然后将其字符串化为JSON文本。 (好吧,我就是这样做的。)如果您可以插入JSON事件阶段的任何一侧,您可以轻松地转换特定的对象成员名称。显然,如果只是通过提供单独调用的过程步骤,您使用的库必须使插入成为可能。

(如果你想知道,“对象成员名称”是:在JSON对象之前的部分,“value”是它之后的部分。)