使用JavaScript解析序列化数据

时间:2013-08-26 13:33:50

标签: javascript

我正在使用ColdFusion从cfc中获取Ajax数据并返回序列化的数据。控制台以此格式显示数据。

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

我如何解析这个?

2 个答案:

答案 0 :(得分:1)

这是一种不易解析的自定义格式,但只需进行一些更改,您就可以将其转换为JSON:

  1. query(替换为{
  2. 将尾随)替换为}
  3. "替换为\"
  4. '替换为"
  5. 如果您想保留query,请将其替换为{"query":{,并将)替换为}}

    注意:这是一个非常简单且易于解决的问题。更好的解决方案是让您的服务器端框架生成适当的JSON并将其发送到浏览器。

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

答案 1 :(得分: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会将它们解析为单个值。