solve multi-level json problem
add callback