ColdFusion,如何将字符串转换为数组?

3
在ColdFusion中给定以下字符串:
ul[0][id]=main1 &ul[0][children][0][id]=child2 &ul[0][children][0][class]= &ul[1][id]=main3 &ul[2][id]=main4 &ul[3][id]=main5 

如何使用上述信息创建数组?
谢谢。

这个字符串是从哪里来的?你只需要一个数组,还是嵌套结构体也可以?你总是只有id/children/class字段,还是其他字段也可能出现? - Peter Boughton
相关问题:http://stackoverflow.com/questions/2871021/how-to-take-a-serialized-string-from-the-db-and-output-a-ul-list-with-coldfusion - Peter Boughton
同时,http://stackoverflow.com/questions/2871002/coldfusion-taking-a-serialized-string-and-converting-it-to-a-structure - Peter Boughton
3个回答

2
从这个字符串来看,您正在尝试将URL查询字符串转换为结构数组。我们在我们的调度程序中做过这件事情,在cfwheels里面,这是非常复杂的。要了解我们是如何做到这一点的,请查看调度程序代码: http://code.google.com/p/cfwheels/source/browse/trunk/wheels/dispatch/request.cfm 需要查看的方法有: $createParams() $getParameterMap() $createNestedParamStruct() $createNewArrayStruct()

1

从那个字符串中并不能完全清楚,但是我最好的猜测是,您正在寻找类似于此的东西。它是一组结构体的数组,遵循这样一个观察:所有“更深层次”的数组(例如children)似乎只有一个元素(即只有一个children[0]),其值是具有键idclass的结构体,每个结构体似乎仅有一个值。

ul                         = [];
ul[1]                      = {}; // ColdFusion arrays are not zero-indexed
ul[1]['id']                = 'main1';
ul[1]['children']          = {}; // Another struct
ul[1]['children']['id']    = 'child2';
ul[1]['children']['class'] = '';  // blank in your example
ul[2]['id']                = 'main3';
ul[3]['id']                = 'main4';

...etc...

我猜你是在解析编码字符串,每次迭代都会循环并创建新的数组元素。有更紧凑的方法可以做到这一点。

但这可能引出一个问题:将编码的数组存储在标准格式中是否更好,易于通过本地 CFML 函数进行编码和解码?使用 serializeJSON() 在数组上获取字符串,使用 deserializeJSON() 将字符串转换回数组。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接