jsonCallback1530150433250_46028 && jsonCallback1530150433250_46028( {“ context”:“ synthesis%3Ddisabled%26q%3D%2523all%2Bcard_content_lang%253Aen%2B%2B%2B%2Bcard_content_type%253er%25% 2529%2B%26b%3D0%26s%3Ddesc%2528score_with_card_update_timestamp%2529%26output_format%3Djson%26callback%3
上面是我想从下面的完整链接中解析的json的部分示例。
主要问题是我无法从网上提取它,因为它无效。我以前使用的是json.loads(),但结构发生了变化。我如何使用不同的库或其他任何内容将整个json数据转换为字符串进行编辑?
感谢您的帮助
我暂时无法发布图片,但这是一种动物:
link = 'https://apisearch.3ds.com/card_search_api?q=%23all%20card_content_lang%3Aen%20%20%20%20card_content_type%3A(%22career%22)%20&s=desc(score_with_card_update_timestamp)&b=0&hf=10&output_format=json&callback=jsonCallback1530150433250_46028'
response = requests.get(link)
time.sleep(random.randint(3,5)
json_obj = json.loads(response.text)
print json_obj
哪个给了我*ValueError: No JSON object could be decoded*
答案 0 :(得分:0)
我不会在这里复制整个JSON数据,但这是要点。
x = "jsonCallback1530150433250_46028 && jsonCallback1530150433250_46028({the_json_data_you_want}"
我将在第一个“ (
”处拆分,因为您需要后面的所有内容:
a = x.split('(', 1)
reqJson = a[1]
print(reqJson)
这将为您提供所需的JSON。现在您可以执行以下操作:
import json
json_data = json.loads(reqJson)
然后继续进行您想要达到的目标。
PS:请以可读格式编辑您的问题,以便其他人也可以为您提供帮助。
答案 1 :(得分:0)
您可能要做的是截断匹配的字符串,直到找到'{' 为此:
# split the json string with '{' as separator:
va1='jhdgfhsgdf&&sdkfhskjdfh({sdfhsj({})dfhsj})'
v1=va1.split('{')
# now delete the first element of the array
del v1[0]
# now join rest of the elements of the array to get proper json string
'{'.join(v1)