使用Python在JSON中使用相同的键转换数据类型的值

时间:2017-12-12 07:25:35

标签: python json casting

我有一个JSON文件,其中包含许多具有相同名称的键,我想要做的是使用Python更改具有相同名称的键的值的数据类型。例如: -

{ 'name': 'Tom'
  'nick': 'T'
  'class': '2'
 }
{ 'name': 'Ron'
  'nick': 'R'
  'class': '5'
 }

现在,在"class"键中,值为'2', '5',这是一个字符串。我们可以将它们改为整数吗?如果是这样的话?

P.s - 问题可能看起来很愚蠢,因为我对这些事情很陌生,但请耐心等待。

3 个答案:

答案 0 :(得分:0)

我看不出你的字典的其余部分是什么,但这是一个简单的例子。 假设这是你的JSON词典:

dic={1:{'name': 'Tom','nick': 'T','class': '2'},
     2:{'name': 'Ron','nick': 'R','class': '5'}}

dic[1]['class']=int(dic[1]['class'])
dic[2]['class']=int(dic[2]['class'])

dic

{1:{'class':2,'name':'Tom','nick':'T'},
 2:{'class':5,'name':'Ron','nick':'R'}}

type(dic[1]['class'])

INT

在JSON结构中,花括号内的两个值中的每一个都有类似于1:2:的键吗?这些是关键。

答案 1 :(得分:0)

我更喜欢传递object_hook来自定义字段修改:

my_json_str = """[
{ "name": "Tom",
  "nick": "T",
  "class": "2"
 },
{ "name": "Ron",
  "nick": "R",
  "class": "5"
 }
]
"""


def convert_class_to_int(my_dict):
    my_dict['class'] = int(my_dict['class'])
    return my_dict


import json

result = json.loads(my_json_str, object_hook=convert_class_to_int)
print(result)

# [{'class': 2, 'nick': 'T', 'name': 'Tom'}, {'class': 5, 'nick': 'R', 'name': 'Ron'}]

答案 2 :(得分:0)

也许太过分了,但如果你使用熊猫,它会自动为你做这件事:

import pandas as pd

jsonstring = '''[{ "name": "Tom","nick": "T","class": "2"},
{ "name": "Ron","nick": "R","class": "5"}]'''

pd.read_json(jsonstring).to_dict('r')

返回:

[{'class': 2, 'name': 'Tom', 'nick': 'T'},
 {'class': 5, 'name': 'Ron', 'nick': 'R'}]