2

I've a very large json file ( like 1,5gb ) and i need to transform it into csv.

The problem is that sometimes there's an extra field like:

[
    {
        "item": {
            "name": "something",
            "colors": {
                "color_of_something": "something",
                "color_of_something2": "something",
                "color_of_something3": "something"
            },
            "dimensions": {
                "dimensions1": "something",
                "dimensions2": "something",
                "dimensions3": "something"
            },
            "This_field_appears_sometimes": "something",
            "description": {
                "text": "something"
            }
        }
    }]

I've this code to transform the json file into csv file:

# -*- coding: utf-8 -*-
import json, csv
with open("items.json") as file:
    data = json.load(file)
    csv_data = csv.writer(open('items.csv','wb+'))
    csv_data.writerow(['item_name','item_color','item_dimension','item_random_field','item_description')
    for json_parsed in data:
        csv_data.writerow([
            json_parsed['item']['name'],
            json_parsed['item']['colors']['color_of_something'],
            json_parsed['item']['dimensions']['dimensions1'],
            json_parsed['item']['This_field_appears_sometimes'],
            json_parsed['item']['description']['text']
        ])

When i run the task i'm getting this error:

KeyError: 'This_field_appears_sometimes'

Need some tip or advice to fix this, meanwhile i'll try if a len checkup works on this code.

2 Answers 2

3

You can use a "safe get" like this:

json_parsed['item'].get('This_field_appears_sometimes', '')

or check with a condition if that key is inside item

if 'This_field_appears_sometimes' in json_parsed['item'].keys()

Sign up to request clarification or add additional context in comments.

Comments

1

The reason is no key 'This_field_appears_sometimes' in some item.

you can use json_parsed['item'].get('This_field_appears_sometimes') or check the json file

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.