# Splitting Array

**URL:** <https://discuss.elastic.co/t/splitting-array/36187>\
**Category:** Logstash\
**Created:** [December 2, 2015, 2:51pm UTC](https://discuss.elastic.co/t/splitting-array/36187 "2015-12-02T14:51:33Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![vikas.saini](https://avatars.discourse-cdn.com/v4/letter/v/87869e/32.png) [@vikas.saini](https://discuss.elastic.co/u/vikas.saini)\
**Post date:** [December 2, 2015, 2:51pm UTC](https://discuss.elastic.co/t/splitting-array/36187/1 "2015-12-02T14:51:33Z")

</div>

I have an array like  
"myarray":[{"name":"alice"},{"age":14}]

and i want to split it and put values as in

"dataclass": {

"fields":{

"name":"alice",  
"age":14  
}

}

---

<div class="post-metadata">

**Author:** ![magnusbaeck](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnusbaeck/32/44943_2.png) [@magnusbaeck](https://discuss.elastic.co/u/magnusbaeck)\
**Post date:** [December 3, 2015, 7:36am UTC](https://discuss.elastic.co/t/splitting-array/36187/2 "2015-12-03T07:36:36Z")

</div>

I suspect you need a ruby filter. Something similar to this perhaps?

```auto
ruby {
  code => "
    event['myarray'].each { |m|
      m.each_pair { |k, v|
        event['dataclass']['fields'][k] = v
      }
    }
  "
}

```

---

<div class="post-metadata">

**Author:** ![vikas.saini](https://avatars.discourse-cdn.com/v4/letter/v/87869e/32.png) [@vikas.saini](https://discuss.elastic.co/u/vikas.saini)\
**Post date:** [December 3, 2015, 9:01am UTC](https://discuss.elastic.co/t/splitting-array/36187/3 "2015-12-03T09:01:14Z")

</div>

showing following error ☹  
**INPUT**  
alice,22&india,farhan@28#akhtar@34  
←\*\*[31mRuby exception occurred: undefined method `[]=' for nil:NilClass {:level=\>:\*\*  
**error}←[0m**  
{  
"message" =\> [  
[0] "alice,22&india,farhan@28#akhtar@34\r"  
],  
"@version" =\> "1",  
"@timestamp" =\> "2015-12-03T08:56:58.308Z",  
"host" =\> "myhost",  
"age" =\> "22&india",  
"datafields" =\> "farhan@28#akhtar@34",  
"dataclass" =\> {  
"datclassname" =\> "alice"  
},  
"myarray" =\> [  
[0] {  
"farhan" =\> 28  
},  
[1] {  
"akhtar" =\> 34  
}  
],  
"tags" =\> [  
[0] "\_rubyexception"  
]  
}  
\*\*my configuration file is \*\*  
input {

stdin  
{  
codec =\> plain  
}  
}

filter {

csv {

```
    columns => ["dataclassname", "age","datafields"]
    separator => ","    
}
mutate
{
rename=>
{
"dataclassname" =>"[dataclass][datclassname]"
 
}
}
ruby {
    code => '
        b = event["datafields"].split("#");
        ary = Array.new;
        for c in b;
            keyvar = c.split("@")[0];
            valuevar = c.split("@")[1];
            d = "{key : " << keyvar << ", value : " << valuevar << "}";
            
            ary.push({ keyvar => valuevar.to_i });
            
        end;
        event["myarray"] = ary;
    '
}
ruby {

```

code =\> "  
event['myarray'].each { |m|  
m.each\_pair { |k, v|  
event['dataclass']['fields'][k] = v  
}  
}  
"  
}

}  
output {

stdout { codec =\> rubydebug }  
}

---

<div class="post-metadata">

**Author:** ![magnusbaeck](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnusbaeck/32/44943_2.png) [@magnusbaeck](https://discuss.elastic.co/u/magnusbaeck)\
**Post date:** [December 3, 2015, 9:15am UTC](https://discuss.elastic.co/t/splitting-array/36187/4 "2015-12-03T09:15:23Z")

</div>

Try inserting

```
event['dataclass']['fields'] = Hash.new unless event['dataclass'].has_key? 'fields'

```

before the assignment to make sure that `event['dataclass']['fields']` exists and is a hash.

---

<div class="post-metadata">

**Author:** ![vikas.saini](https://avatars.discourse-cdn.com/v4/letter/v/87869e/32.png) [@vikas.saini](https://discuss.elastic.co/u/vikas.saini)\
**Post date:** [December 3, 2015, 9:25am UTC](https://discuss.elastic.co/t/splitting-array/36187/5 "2015-12-03T09:25:11Z")

</div>

oh magnus ! it worked 😄  
thank you so much !

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 6, 2017, 5:20am UTC](https://discuss.elastic.co/t/splitting-array/36187/6 "2017-07-06T05:20:11Z")

</div>


