我在SO上看到了一些关于将XML转换为JSON的方法的问题,但我有兴趣转向其他方式.是否有用于将JSON转换为XML的python库?
编辑:没有什么东西马上回来,所以我继续编写了一个解决这个问题的脚本.
Python已经允许您将JSON转换为本机dict(使用json或者在版本<2.6中simplejson),因此我编写了一个将本机dicts转换为XML字符串的库.
https://github.com/quandyfactory/dict2xml
它支持int,float,boolean,string(和unicode),array和dict数据类型以及任意嵌套(yay recursion).
一旦8小时过去,我会将此作为答案发布.
Rya*_*eal 36
什么都没有立刻回来,所以我继续编写了一个解决这个问题的脚本.
Python已经允许您将JSON转换为本机dict(使用json或者在版本<2.6中simplejson),因此我编写了一个将本机dicts转换为XML字符串的库.
https://github.com/quandyfactory/dict2xml
它支持int,float,boolean,string(和unicode),array和dict数据类型以及任意嵌套(yay recursion).
die*_*cht 12
如果您没有这样的包裹,可以尝试:
def json2xml(json_obj, line_padding=""):
result_list = list()
json_obj_type = type(json_obj)
if json_obj_type is list:
for sub_elem in json_obj:
result_list.append(json2xml(sub_elem, line_padding))
return "\n".join(result_list)
if json_obj_type is dict:
for tag_name in json_obj:
sub_obj = json_obj[tag_name]
result_list.append("%s<%s>" % (line_padding, tag_name))
result_list.append(json2xml(sub_obj, "\t" + line_padding))
result_list.append("%s</%s>" % (line_padding, tag_name))
return "\n".join(result_list)
return "%s%s" % (line_padding, json_obj)
Run Code Online (Sandbox Code Playgroud)
例如:
s='{"main" : {"aaa" : "10", "bbb" : [1,2,3]}}'
j = json.loads(s)
print(json2xml(j))
Run Code Online (Sandbox Code Playgroud)
结果:
<main>
<aaa>
10
</aaa>
<bbb>
1
2
3
</bbb>
</main>
Run Code Online (Sandbox Code Playgroud)