Skip to content

Instantly share code, notes, and snippets.

@czy88840616
Last active December 15, 2015 23:58
Show Gist options
  • Save czy88840616/5343715 to your computer and use it in GitHub Desktop.
Save czy88840616/5343715 to your computer and use it in GitHub Desktop.
问题:从模板中推导出正确的json结构
#set($orderList = $!{result.orderList})
#foreach($order in $!orderList)
#set($shop = $!{order.shop})
$!{shop.singleItemId}
#end
{
"result": {
"orderList": [
{
"shop": {
"singleItemId": ""
}
}
]
}
}
@czy88840616
Copy link
Author

目前已经有的数据:
1、所以带$的变量
["orderList","result.orderList","order","shop","order.shop","shop.singleItemId"]

2、set的变量
{"orderList":"result.orderList","shop":"order.shop"}

3、for循环的变量
{"order":"orderList"}

@czy88840616
Copy link
Author

目前的方案:
1、正向推导
大概思路是碰到for循环就进入一个作用域,把作用域变量记录到栈中,当碰到一个变量的第一部分字符不是这个作用域变量时就出栈,然后继续组合变量

2、逆向推导
这也是目前的实现思路,其实是取巧了,因为逆过来可以避免作用域的问题(变量肯定是先定义再用的),所以倒过来的话变量就组装完了之后,才会碰到set和for,不过会碰到的问题就是json对象层级不对,需要拼合

@czy88840616
Copy link
Author

1、先把变量转成对象
2、一旦碰到变量只有一个字符串,并且在foreach或者set中的,就移动一次对象(因为此时实质上的变量应该已经都变成一个大对象了,移动的只是这个对象)

这个逻辑不知道对不对。。待实验

@neekey
Copy link

neekey commented Apr 9, 2013

挺爷加油。。。。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment