我正在使用ColdFusion处理来自cfc的Ajax数据并返回序列化的数据。控制台以这种格式显示数据。使用JavaScript解析串行化数据
query('id':[1],'title':['value'],'descr':['value2'])
我该如何解析?
我正在使用ColdFusion处理来自cfc的Ajax数据并返回序列化的数据。控制台以这种格式显示数据。使用JavaScript解析串行化数据
query('id':[1],'title':['value'],'descr':['value2'])
我该如何解析?
这是一个自定义格式,这是不容易解析,但有一些变化,你可以将其转换成JSON:
query(
与{
}
)
"
与\"
'
与"
如果你想保持query
,然后用{"query":{
取代它与}}
注意更换)
:这是一个非常简单,因此脆弱的解决方案。更好的解决方案是让你的服务器端框架生成适当的JSON并发送给浏览器。
编辑如果您有JSON字符串,则可以使用jQuery.parseJSON()来解析它。
数据序列化的格式使得将其解析为JSON非常简单。查看jsfiddle了解实例。我开始将原始数据作为字符串获取。接下来,我替换了单引号,并在字符串周围添加了大括号以适应JSON字符串格式。
步骤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解析它们视为一个值,如果数组仅包含一个元素。
如果您返回JSON,那么您可以使用JS轻松解析它。但是你显示的格式是自定义的,所以你必须编写你自己的解析器。请注意,这与jQuery或JSON无关。 –
由于您显示的格式与JSON类似,因此可能最容易将ColdFusion代码更改为返回JSON,因此您可以使用[jQuery的JSON解析函数](http://api.jquery.com/jQuery.parseJSON/) 。如果我猜如何读取自定义格式,那么与您的示例相同的JSON将是'{'id':1,'title':'value','descr':'value2'}'。 –
自定义格式实际上是一个可用于序列化查询的coldfusion函数。我将使用serializeJSON并查看它是如何工作的。 – dutchlab