Skip to main content

Serializing a colfusion query with ObjectSave

There has been a lot of talk on the subject of serializing queries using JSON.  This has come up around the times of the last couple of major version releases.  Query serialization has all the problems that serializing other data types have;  leading zeros being lost, string and numeric data type mixups, no case preservation, and several other problems that I can't recall right now.  The representation of the columns and the data has also been discussed and debated repeatedly.  An option to change this formatting has been added to try to satisfy everyone.


Solutions and work-arounds for most of these problems have been worked out  by the community.  Ben Nadel created his JSONSerializer.cfc.  Coldfusion 11 also added a system for supplying a custom serializer, although I haven't had a chance to try that yet so I don't know if you can avoid all the problems lined out above.

These issues are all very important when using serialized data in javascript or building web services.  There is also another issue that comes up when serializing a query and deserializing it back into cf.  The data types of the columns are lost.  This can be important, as Adam Cameron showed, when trying to do a query of queries on the deserialized query.

Alright that's enough about that, now for the main point of the article.  If you are passing data between cf systems, or caching data to be used later on the same system you can use objectsave and objectload.

The code below shows creating a query with varchar and integer columns.  Then I save and load the query and show that the data and column types remain intact.



The results of running the code are shown below.  First you see the metadata and data for the original query.  Then the same thing for the saved and loaded query.  Then I show the results of running a query of queries on the loaded query.  This returns expected results and does not error when comparing the null value.


This aproach doesn't always work, but when going from cf to cf it avoids all the problems that JSON serialization has.

Comments

Popular posts from this blog

Getting Hidden App Data From Your Google Drive

Some Android applications use space on your Google Drive to store data.  You can't see this data by browsing drive the normal way.  You can get access to it if you get the access token from the app and do a few other things.

I use an app to keep some notes and other things.  They require getting the paid version of the app to backup your data.  I wanted to see if I could get it myself without paying for the app.  I found out how to do this from this Stackoverflow post http://stackoverflow.com/questions/22832104/see-hidden-app-data-in-google-drive.  The example there uses php. Since I have been learning Python recently, I decided to see if I could do the same thing with Python.

 There is a pretty good explanation of why you need to go through all the steps you need to go through to get your data in the accepted answer for that post, so I won't go into too much detail about that here.


My First Memories of Coding

The first time I remember writing code was in grade school in the computer lab.  We were learning Basic.  I'm not sure how old I was, but it would have been sometime in the late '80s or early '90s.  I remember they had us write a program that would take some numbers from the user and print out the average.  I had to ask how to do division. I had only seen it with the standard division symbol in math class, not the forward slash.  Soon after that I was able to get Basic on my home PC.  Actually I think it was included in MS-DOS.

At school and in the beginning at home I was using Basic where you had to use line numbers to write your code.  Then to edit a line you had to retype that line with the number.  Soon after that I was able to get QBasic and a book to help me get started.


Python control of Broadlink RM2 wifi remote

I recently got a Broadlink wifi remote.  I have been playing around trying to send commands to it with python.  I found code on github that does most of what I need.  It looks like the device itself doesn't learn any remote codes.  It is all in the app.  The code I found can send codes to the device and get codes from learning mode. I have a bunch of buttons programmed in the app already.  I wanted to see if I could get those codes.  I think I got them today.  The app, called eControls, allows you to backup your setup.  Today I was able to get my backup file from their backup site. Tomorrow I will try to use the codes from the backup.