Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中使用Json数据初始化对象?_Python_Json - Fatal编程技术网

在python中使用Json数据初始化对象?

在python中使用Json数据初始化对象?,python,json,Python,Json,这是我现在得到的 import urllib2 import json from pprint import pprint response = urllib2.urlopen('http://census.soe.com/get/ps2:v2/weapon_datasheet?c:start=0&c:limit=1&c:show=capacity,clip_size,damage,fire_rate_ms,item_id,reload_ms') response1 = ur

这是我现在得到的

import urllib2
import json
from pprint import pprint


response = urllib2.urlopen('http://census.soe.com/get/ps2:v2/weapon_datasheet?c:start=0&c:limit=1&c:show=capacity,clip_size,damage,fire_rate_ms,item_id,reload_ms')
response1 = urllib2.urlopen('http://census.soe.com/get/ps2:v2/item?c:start=0&c:limit=1&c:show=name.en,description.en,item_id')
data = json.load(response)
data1 = json.load(response1)
pprint(data)
pprint(data1)


class Weapon(object):
    """Creates a PlanetSide2 Weapon"""
    def __init__(self, capacity, clip_size, damage, fire_rate_ms, itemd_id, 
                 reload_ms, description, name):
        self.capacity = capacity
        self.clip_size = clip_size
        self.damage = damage
        self.fire_rate_ms = fire_rate_ms
        self.item_id = item_id
        self.reload_ms = reload_ms
        self.description = description
        self.name = name
现在我的数据是这样的

{u'returned': 1,
 u'weapon_datasheet_list': [{u'capacity': u'210',
                             u'clip_size': u'30',
                             u'damage': u'143',
                             u'fire_rate_ms': u'75',
                             u'item_id': u'73',
                             u'reload_ms': u'2455'}]}
{u'item_list': [{u'description': {u'en': u"The New Conglomerate's Mag-Cutter features a powerful electromagnet capable of cutting through enemy body armor."},
                 u'item_id': u'1',
                 u'name': {u'en': u'Mag-Cutter'}}],
 u'returned': 1}
有没有一种方法可以使用json中的数据用武器的名称初始化武器对象

比如说。Mag Cutter=json文件中的武器数据


我如何从json文件数据中读取设置武器类变量?

当然,使用数据的第一个元素['wealth\u datasheet\u list']加上数据1['item\u list']的第一个元素中的一些数据:

这会将所有第一个武器数据表列表项作为关键字参数应用于武器构造函数,将该字典中的键与构造函数的参数名称相匹配。其余两项,名称和说明,我手动提供

这意味着你需要更正武器上的打字错误;itemd_id应拼写为item_id以匹配JSON结构

演示:


太完美了!我一直在谷歌上搜索,试图自己找出答案,结果却空手而归。然后你在2秒钟内帮我解决了这个问题哈哈
name = data1['item_list'][0]['name']['en']
description = data1['item_list'][0]['description']['en']
mag_cutter = Weapon(name=name, description=description, 
                    **data['weapon_datasheet_list'][0])
>>> import urllib2
>>> import json
>>> from pprint import pprint
>>> response = urllib2.urlopen('http://census.soe.com/get/ps2:v2/weapon_datasheet?c:start=0&c:limit=1&c:show=capacity,clip_size,damage,fire_rate_ms,item_id,reload_ms')
>>> response1 = urllib2.urlopen('http://census.soe.com/get/ps2:v2/item?c:start=0&c:limit=1&c:show=name.en,description.en,item_id')
>>> data = json.load(response)
>>> data1 = json.load(response1)
>>> class Weapon(object):
...     """Creates a PlanetSide2 Weapon"""
...     def __init__(self, capacity, clip_size, damage, fire_rate_ms, item_id, 
...                  reload_ms, description, name):
...         self.capacity = capacity
...         self.clip_size = clip_size
...         self.damage = damage
...         self.fire_rate_ms = fire_rate_ms
...         self.item_id = item_id
...         self.reload_ms = reload_ms
...         self.description = description
...         self.name = name
... 
>>> name = data1['item_list'][0]['name']['en']
>>> description = data1['item_list'][0]['description']['en']
>>> mag_cutter = Weapon(name=name, description=description, 
...                     **data['weapon_datasheet_list'][0])
>>> pprint(vars(mag_cutter))
{'capacity': u'210',
 'clip_size': u'30',
 'damage': u'143',
 'description': u"The New Conglomerate's Mag-Cutter features a powerful electromagnet capable of cutting through enemy body armor.",
 'fire_rate_ms': u'75',
 'item_id': u'73',
 'name': u'Mag-Cutter',
 'reload_ms': u'2455'}