我知道几个将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"
}
}
据我所知,没有图书馆提供这样做的方法。也许有一种方法可以使用正则表达式实现这一点,但我必须小心不要在数据中剥离有效的@字符?
答案 0 :(得分:1)
String.replace("\"@", "\"")
还是什么?
<强>更新强>
要防止在字符串值中替换@,可以使用regexp version of replace。你会找到前面带有“并且前面没有X的@符号,其中X是冒号(:)后跟任意数量的空格。你将被”再次“替换。
一种不太常见的方法是以类似内容事件的方式使json库流,捕获任何对象成员名称事件,替换以@开头的成员名称,然后将它们返回到事件流。然后,该流将再次转换为JSON文本。 (我目前正在开发一个提供此类功能的库,但遗憾的是它尚未发布。)
同样,您可以在XML到JSON转换过程中挂钩。转换器必须将XML流式传输到某种XML内容事件,这些事件稍后会转换为JSON内容事件,然后将其字符串化为JSON文本。 (好吧,我就是这样做的。)如果您可以插入JSON事件阶段的任何一侧,您可以轻松地转换特定的对象成员名称。显然,如果只是通过提供单独调用的过程步骤,您使用的库必须使插入成为可能。
(如果你想知道,“对象成员名称”是:在JSON对象之前的部分,“value”是它之后的部分。)