使用python处理json中的转义url字符串

时间:2012-08-09 21:15:16

标签: python json parsing escaping url-parsing

我正在访问一个返回json的服务,如下所示:

{
"A":"A value",
"B":{
      "B1":"B1 value",
      "B2":"B2 value"
    },
"C":{
               "c_url":"http:\/\/someurl:someport\/somefolder\/somefile",

    }
}

我想要做的是解析这个json并在键值对中获取文件夹的url和somefile部分。

因此,基本上,在我的脚本处理完json之后,它会在文件中以某种分隔方式输出url和somefile。

文件处理完上面提供的json后的输出是:

url: http://someurl:someport/somefolder/somefile
file: somefile

我很确定python中有很多json解析器会解析json但是我如何处理已经使用转义字符预处理的url字符串?我是否需要编写自己的url-encoder,它将从url字符串中删除转义字符?

另外,我需要将url的各个组件标记为“文件”部分,是否有任何库可以帮助解决这个问题?

由于

2 个答案:

答案 0 :(得分:3)

所以,根据http://www.quora.com/Why-does-the-cjson-Python-module-not-correctly-unescape-reverse-solidus-solidus

simplejson应该能够处理这种“错误”转义算法。考虑:

#!/usr/bin/env python
import simplejson

print simplejson.loads('"http:\/\/someurl:someport\/somefolder\/somefile"')

请注意,simplejson不是标准软件包,但可以通过easy_install进行安装。

示例输出:

[85][23:35:24] vlazarenko@alluminium (~/tests) > python unescape.py 
http://someurl:someport/somefolder/somefile

答案 1 :(得分:2)

您的示例JSON在“c_url”k-v对之后不需要逗号。

>>> import json
>>> st = '{"A":"A value","B":{ "B1":"B1 value", "B2":"B2 value" },"C":{ "c
_url":"http:\/\/someurl:someport\/somefolder\/somefile" }}'
>>> json.loads(st)
{u'A': u'A value', u'C': {u'c_url': u'http://someurl:someport/somefolder/somefile'}, u'B': {u'B1': u
'B1 value', u'B2': u'B2 value'}}

并且只获取URL的'somefile'部分:

url.split('/')[url.count('/')]