<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: serialize code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Sat, 26 Jul 2008 18:45:21 GMT</pubDate>
    <description>DZone Snippets: serialize code</description>
    <item>
      <title>Quick and Dirty JSON Serializer</title>
      <link>http://snippets.dzone.com/posts/show/3823</link>
      <description>// quick and dirty JOSN serializer&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;def jsonize(d)&lt;br /&gt;  def surround(d, i=0); '' &lt;&lt; '"[{'[i] &lt;&lt; d &lt;&lt; '"]}'[i]; end&lt;br /&gt;  alias j jsonize; alias s surround&lt;br /&gt;  if d.kind_of?(String) then s(d)&lt;br /&gt;  elsif d.kind_of?(Symbol) then s(d.to_s)&lt;br /&gt;  elsif d.kind_of?(Array) then s(d.collect {|v| j(v)}.join(', '), 1)&lt;br /&gt;  elsif d.kind_of?(Hash) then s(d.to_a.collect { |v| "#{j(v[0])} : #{j(v[1])}" }.join(', '),2)&lt;br /&gt;  # add support for other types of objects here if needed...&lt;br /&gt;  else d.to_s; end&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sun, 15 Apr 2007 13:48:52 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3823</guid>
      <author>randomdan (Dan)</author>
    </item>
    <item>
      <title>recursive Rails style serialization for javascript objects</title>
      <link>http://snippets.dzone.com/posts/show/2426</link>
      <description>Have you ever wanted to post from your javascript program to a Rails app so that the params are available to your application in a properly nested hash? Prototype makes this easy for form elements with it's Form Serializer, but it makes no provision for standard javascript objects.&lt;br /&gt;&lt;br /&gt;Suffer no longer. With the following code you can serialize arbitrarily nested objects (eg, the sort of thing you get when you parse a JSON statement), so that it is ready to be posted via http to a Rails app.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jchris.mfdz.com/articles/2006/08/15/rails-style-recursive-javacript-object-serialization"&gt;The original Rails recursive Javascript object serializer.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;var serializer = {&lt;br /&gt; &lt;br /&gt;  serialize : function(object) {&lt;br /&gt;    var values = []; &lt;br /&gt;    var prefix = '';&lt;br /&gt;    &lt;br /&gt;    values = this.recursive_serialize(object, values, prefix);&lt;br /&gt;    &lt;br /&gt;    param_string = values.join('&amp;');&lt;br /&gt;    return param_string;&lt;br /&gt;  },&lt;br /&gt;  &lt;br /&gt;  recursive_serialize : function(object, values, prefix) {&lt;br /&gt;    for (key in object) {&lt;br /&gt;      if (typeof object[key] == 'object') {&lt;br /&gt;        &lt;br /&gt;        if (prefix.length &gt; 0) {&lt;br /&gt;          prefix += '['+key+']';         &lt;br /&gt;        } else {&lt;br /&gt;          prefix += key;&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        values = this.recursive_serialize(object[key], values, prefix);&lt;br /&gt;        &lt;br /&gt;        prefixes = prefix.split('[');&lt;br /&gt;        &lt;br /&gt;        if (prefixes.length &gt; 1) {&lt;br /&gt;          prefix = prefixes.slice(0,prefixes.length-1).join('[');&lt;br /&gt;        } else {&lt;br /&gt;          prefix = prefixes[0];&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;      } else {&lt;br /&gt;        value = encodeURIComponent(object[key]);&lt;br /&gt;        if (prefix.length &gt; 0) {&lt;br /&gt;          prefixed_key = prefix+'['+key+']'          &lt;br /&gt;        } else {&lt;br /&gt;          prefixed_key = key&lt;br /&gt;        }&lt;br /&gt;        prefixed_key = encodeURIComponent(prefixed_key);&lt;br /&gt;        if (value) values.push(prefixed_key + '=' + value);&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;    return values;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Usage:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;payload = new Object;&lt;br /&gt;payload.comment = new Object;&lt;br /&gt;payload.comment.title = "The Title";&lt;br /&gt;payload.comment.body = "The body of the post.";&lt;br /&gt;post_string = serializer.serialize(payload);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Result:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;comment%5Btitle%5D=The%20Title&amp;comment%5Bbody%5D=The%20body%20of%20the%20post.&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Which gives you this in Rails:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;params[:comment] #=&gt;&lt;br /&gt;{:title =&gt; "The Title", :body =&gt; "The body of the post."}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Wed, 16 Aug 2006 08:13:13 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2426</guid>
      <author>jchris (Chris Anderson)</author>
    </item>
  </channel>
</rss>
