coldfusion variables

I have a URL query parameter string that is:
?fq=object_type:"Graphic+arts"&rows%3D10&q%3Dcatlin%26
I want it to be
?fq=object_type:"Graphic+arts"&rows=10&q=catlin
Is there a way to do this without replacing text.
I tried URLDecode but it didn't work.
Thanks.
cbeverlyAsked:
Who is Participating?
 
_agx_Connect With a Mentor Commented:
It'll only work IF you changed the url string to pass a JSON string for the #url.fq# parameter. (It won't work with your original value because it's not a valid json string. )  If you are passing a json string, then make sure you urlencoded the value:

            ie   somePage.cfm?fq=#URLEncodedFormat(serializeJSON(someStruct))#"

If you can't change it to pass JSON, you'll have to use the 1st approach instead.
0
 
_agx_Commented:
What result did you get? Because it works fine for me
0
 
sumColdCommented:
Hey try using 'unescape()' javascript function.

You can also refer below link:

http://www.w3schools.com/jsref/jsref_unescape.asp
0
Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

 
cbeverlyAuthor Commented:
My problem is I have a list below that I want to loop through using comma as a delimiter which works fine until it gets to "Catlin,George" and then it thinks there are 2 separate entities instead of one. I want the list to be  separated out into 1. object_type 2. topic 3. name 4. place 5. onPhyscialExhibit and 6.culture  I don't know what else to use for a delimiter.
 object_type:"Paintings",topic:"Frontier",name:"Catlin, George",place:"United States",onPhysicalExhibit:"Yes",culture:"Indians of North America"
0
 
_agx_Commented:
CF list functions accept other delimiters besides a comma. So if you're creating the original list, you could use any delimiter you want, like "|" or "~" or even non-printable characters.

YourString

object_type:"Paintings"|topic:"Frontier"|name:"Catlin, George"|place:"United States"|onPhysicalExhibit:"Yes"|culture:"Indians of North America"

Example
<cfset params = {}>
<cfloop list="#yourString#" index="elem" delimiters="|">
      <cfif listLen(elem, ":") eq 2>
            <cfset theName = listFirst(elem, ":")>
            <cfset theValue = replace(listLast(elem, ":"), '"', "", "all")>
            <cfset params[theName] = theValue>
      </cfif>
</cfloop>
<cfdump var="#params#">
0
 
_agx_Commented:
Even simpler, format the list values as a JSON string:

ie YourString:
{"place":"United States","name":"Catlin, George","culture":"Indians of North America","object_type":"Paintings","topic":"Frontier","onPhysicalExhibit":true}

Then you can deserialize it into a CF structure with just:

             <cfset paramsAsStruct = deserializeJSON(yourString)>
0
 
cbeverlyAuthor Commented:
When I try #SerializeJson(url.fq)#
I am getting this below not the string you have. "place:\"United States\",name:\"Catlin, George\",culture:\"Indians of North America\","object_type:\"Paintings\",topic:\"Frontier\""
0
 
_agx_Commented:
No assuming #url.fq# contains a json string, you want to DEserialize, not serialize. Deserializing will convert the json string back into a CF structure.

     <cfset paramsAsStruct = deserializeJSON( url.fq )>
0
 
cbeverlyAuthor Commented:
When I try deserializeJSON(url.fq) I get this error message:

JSON parsing failure at character 1:'p' in place:"United States",culture:"Indians of North America",object_type:"Paintings"
0
 
cbeverlyAuthor Commented:
Thank you for your help. I attacked the problem from a different approach so I am not going to use the code I posted.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.