2013-08-26 74 views
0

我正在使用ColdFusion处理来自cfc的Ajax数据并返回序列化的数据。控制台以这种格式显示数据。使用JavaScript解析串行化数据

query('id':[1],'title':['value'],'descr':['value2']) 

我该如何解析?

+6

如果您返回JSON,那么您可以使用JS轻松解析它。但是你显示的格式是自定义的,所以你必须编写你自己的解析器。请注意,这与jQuery或JSON无关。 –

+0

由于您显示的格式与JSON类似,因此可能最容易将ColdFusion代码更改为返回JSON,因此您可以使用[jQuery的JSON解析函数](http://api.jquery.com/jQuery.parseJSON/) 。如果我猜如何读取自定义格式,那么与您的示例相同的JSON将是'{'id':1,'title':'value','descr':'value2'}'。 –

+0

自定义格式实际上是一个可用于序列化查询的coldfusion函数。我将使用serializeJSON并查看它是如何工作的。 – dutchlab

回答

1

这是一个自定义格式,这是不容易解析,但有一些变化,你可以将其转换成JSON:

  1. 更换query({
  2. }
  3. 更换拖尾 )
  4. 更换"\"
  5. 更换'"

如果你想保持query,然后用{"query":{取代它与}}

注意更换):这是一个非常简单,因此脆弱的解决方案。更好的解决方案是让你的服务器端框架生成适当的JSON并发送给浏览器。

编辑如果您有JSON字符串,则可以使用jQuery.parseJSON()来解析它。

+0

自定义格式实际上是一个可用于序列化查询的coldfusion函数。我将使用serializeJSON并查看它是如何工作的。 – dutchlab

+0

{“COLUMNS”:[“ID”,“TITLE”,“DESCR”],“DATA”:[[1,“value1”,“value2”]]}。使用serializeJSON控制台显示这一点。我已经看到有些人不得不编写特殊脚本来将数据转换为不同的格式。有没有办法用JQuery来处理这个问题? – dutchlab

+0

是:'var obj = jQuery.parseJSON(...);' –

0

数据序列化的格式使得将其解析为JSON非常简单。查看jsfiddle了解实例。我开始将原始数据作为字符串获取。接下来,我替换了单引号,并在字符串周围添加了大括号以适应JSON字符串格式。

jsFiddle example


步骤1

query('id':[1],'title':['value'],'descr':['value2']) 

'id':[1],'title':['value'],'descr':['value2'] 

步骤2

'id':[1],'title':['value'],'descr':['value2'] 

{"id":[1],"title":["value"],"descr":["value2"]} 

现在你可以使用JSON.parse从序列化的字符串创建一个JavaScript对象。但请注意,格式中的所有值都是数组值。这是一个小例子来说明我的意思:

{ 
    "int": 1, 
    "boolean": true, 
    "string": "foo", 
    "array": ["value1", true, 1234] 
} 

在你的榜样每个值是一个数组的值,但JSON.parse解析它们视为一个值,如果数组仅包含一个元素。