Parsing JSON fails as strings appear instead of di

2019-03-04 06:44发布

问题:

with open('twit/example.json', encoding='utf8') as json_data:
    for line in json_data:
        try:
            dataText = json.loads(line)
        except ValueError:
            continue

for a in dataText:
    print(a["user"]["location"])

the result is: string indices must be integers

Update: The below answer is for printing

print(dataText["user"]["location"])

now I want this one:

print(a["user"]["location"])

回答1:

If your json file is in a normal format, use this instead:

with open('twit/example.json', encoding='utf8') as json_data:
    dataText = json.loads(line)

for a in dataText:
    print(dataText["user"]["location"])

The way your code is currently written makes me think you have multiple json structures in a single file, separated by new lines. This is not how json is usually formatted.