# Indent any json file nested fields and make it flat

**URL:** <https://discuss.elastic.co/t/indent-any-json-file-nested-fields-and-make-it-flat/194447>\
**Category:** Logstash\
**Created:** [August 8, 2019, 2:08pm UTC](https://discuss.elastic.co/t/indent-any-json-file-nested-fields-and-make-it-flat/194447 "2019-08-08T14:08:34Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![Badger](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/badger/32/25190_2.png) [@Badger](https://discuss.elastic.co/u/Badger)\
**Post date:** [August 8, 2019, 3:05pm UTC](https://discuss.elastic.co/t/indent-any-json-file-nested-fields-and-make-it-flat/194447/2 "2019-08-08T15:05:11Z")

</div>

You will need a ruby script. Create a file called flattenJSON.rb that contains

```auto
def register(params)
    @field = params['field']
end

def flatten(object, name, event)
    if object
        if object.kind_of?(Hash) and object != {}
            object.each { |k, v| flatten(v, "#{name}.#{k}", event) }
        else
            event.set(name, object)
        end
    end
end

def filter(event)
    o = event.get(@field)
    if o
        flatten(o, @field, event)
    end
    event.remove(@field)
    [event]
end

```

and then call it using

```
    ruby {
        path => "/home/user/flattenJSON.rb"
        script_params => { "field" => "body" }
    }
```

---

_[View the full topic](https://discuss.elastic.co/t/indent-any-json-file-nested-fields-and-make-it-flat/194447)._
