python + json:解析到列表 [英] python + json: parse to list

查看:396
本文介绍了python + json:解析到列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对于使用python(使用python 2.7)解析JSON数据,我有些陌生.我必须将一项服务发送给API调用,并且JSON响应类似于我下面的内容. 行"中的项目数量可能会有所不同.我需要做的是,如果有第二行,则仅取第二行的内容",并将其放入列表中.本质上,它仅是广告系列确认编号"的列表,仅此而已.如果有帮助的话,这个数字也总是只有9个数字.任何建议将不胜感激.

I'm somewhat new to parsing JSON data with python (using python 2.7). There is a service that I have to send API calls to, and the JSON response is something like what I have below. the amount of items in 'row' can vary. What I need to do is take only the 'content' from the second line IF there is a second line, and put it into a list. Essentially, it is a list of only the 'campaign confirmation numbers' and nothing else. the number will also always be only 9 numeric numbers if that helps anything. Any advice would be very much appreciated.

{"response":
    {"result":
        {"Potentials":
            {"row":
                [
                {"no":"1","FL":
                    {"content":"523836000004148171","val":"POTENTIALID"}
                },
                {"no":"2","FL":
                    {"content":"523836000004924051","val":"POTENTIALID"}
                },
                {"no":"3","FL":
                    [
                    {"content":"523836000005318448","val":"POTENTIALID"},
                    {"content":"694275295","val":"Campaign Confirmation Number"}
                    ]
                },
                {"no":"4","FL":
                    [
                    {"content":"523836000005318662","val":"POTENTIALID"},
                    {"content":"729545274","val":"Campaign Confirmation Number"}
                    ]
                },
                {"no":"5","FL":
                    [
                    {"content":"523836000005318663","val":"POTENTIALID"},
                    {"content":"903187021","val":"Campaign Confirmation Number"}
                    ]
                },
                {"no":"6","FL":
                    {"content":"523836000005322387","val":"POTENTIALID"}
                },
                {"no":"7","FL":
                    [
                    {"content":"523836000005332558","val":"POTENTIALID"},
                    {"content":"729416761","val":"Campaign Confirmation Number"}
                    ]
                }
                ]
            }
        },
    "uri":"/crm/private/json/Potentials/getSearchRecords"}
}

此示例的输出示例为:

confs = [694275295、729545274、903187021、729416761]

confs = [694275295, 729545274, 903187021, 729416761]

confs = ['694275295','729545274','903187021','729416761']

confs = ['694275295', '729545274', '903187021', '729416761']

将它们存储为字符串还是整数并不重要

it really doesn't matter if they're stored as strings or ints

这是我的代码片段:

import urllib
import urllib2
import datetime
import json

key = '[removed]'

params = {
    '[removed]'
    }

final_URL = 'https://[removed]'
data = urllib.urlencode(params)
request = urllib2.Request(final_URL,data)
response = urllib2.urlopen(request)
content = response.read()

j = json.load(content)

confs = []
for no in j["response"]["result"]["Potentials"]["row"]:
    data = no["FL"]
    if isinstance(data, list) and len(data) > 1:
        confs.append(int(data[1]["content"]))

print confs

推荐答案

假设j是您的JSON对象,上面的结构已解析为:

Assuming j is your JSON object which the above structure has been parsed into:

>>> results = []
>>> for no in j["response"]["result"]["Potentials"]["row"]:
...     data = no["FL"]
...     if isinstance(data, list) and len(data) > 1:
...         results.append(int(data[1]["content"]))
...
>>> results
[694275295, 729545274, 903187021, 729416761]

这篇关于python + json:解析到列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆