将JSON文件放入字典

时间:2019-07-26 16:41:30

标签: python json

我正在尝试将JSON文件转换为python dict。但我失败了。

这是我的JSON文件:

me.json

{
    "title": "this is title",
    "Description": " Fendi is an Italian luxury labelarin. ",
    "url": "https:/~"
}

{
    "title": " - Furrocious Elegant Style",
    "Description": " the Italian luxare vast. ",
    "url": "https://www.s"
}

{
    "title": "Rome, Fountains and Fendi Sunglasses",
    "Description": " Fendi started off as a store. ",
    "url": "https://www.~"
}

{
    "title": "Tipsnglasses",
    "Description": "Whether irregular orn season.",
    "url": "https://www.sooic"
}

这是我的python代码:

import json

with open('me.json', 'r') as obj:
    a = obj.read()
    for i in a:
        medict = dict(i)

我不知道为什么它不起作用,这是怎么回事。

在这种情况下有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

请使用json.loads
但是,您必须首先将文件中的数据更改为json格式。请使用以下数据。
我添加了[],

[{
    "title": "this is title",
    "Description": " Fendi is an Italian luxury labelarin. ",
    "url": "https:/~"
}
,
{
    "title": " - Furrocious Elegant Style",
    "Description": " the Italian luxare vast. ",
    "url": "https://www.s"
}
,
{
    "title": "Rome, Fountains and Fendi Sunglasses",
    "Description": " Fendi started off as a store. ",
    "url": "https://www.~"
}
,
{
    "title": "Tipsnglasses",
    "Description": "Whether irregular orn season.",
    "url": "https://www.sooic"
}]

然后,请参考以下代码:

import json

with open('me.json', 'r') as obj:
    a = obj.read()
    medict = json.loads(a)
    print (medict)

结果是:

[{'title': 'this is title', 'Description': ' Fendi is an Italian luxury labelarin. ', 'url': 'https:/~'}, {'title': ' - Furrocious Elegant Style', 'Description': ' the Italian luxare vast. ', 'url': 'https://www.s'}, {'title': 'Rome, Fountains and Fendi Sunglasses', 'Description': ' Fendi started off as a store. ', 'url': 'https://www.~'}, {'title': 'Tipsnglasses', 'Description': 'Whether irregular orn season.', 'url': 'https://www.sooic'}]

答案 1 :(得分:0)

您可以使用re模块在​​问题中显示的输入文件中找到JSON对象(严格来说JSON format中没有)(即无需修改):

import ast
import json
from pprint import pprint
import re

with open('me.json', 'r') as obj:
    data = obj.read()
    matches = re.findall(r'({.+?})', data,  re.DOTALL)
    result = [json.loads(m) for m in matches]

pprint(result)

输出:

[{'Description': ' Fendi is an Italian luxury labelarin. ',
  'title': 'this is title',
  'url': 'https:/~'},
 {'Description': ' the Italian luxare vast. ',
  'title': ' - Furrocious Elegant Style',
  'url': 'https://www.s'},
 {'Description': ' Fendi started off as a store. ',
  'title': 'Rome, Fountains and Fendi Sunglasses',
  'url': 'https://www.~'},
 {'Description': 'Whether irregular orn season.',
  'title': 'Tipsnglasses',
  'url': 'https://www.sooic'}]