I understood it this way :
(setq lst (list "ThanhDuan" '(2 3 3.2) '((2 5 6.5) (4 5 8.14)) '("every" "Ok")))
(defun LM:data->xdata ( x )
(cond
( (= 'str (type x)) (list (cons (if (handent x) 1005 1000) x)) )
( (= 'real (type x)) (list (cons 1040 x)) )
( (= 'int (type x)) (list (cons (if (< -32769 x 32768) 1070 1071) x)) )
( (= 'list (type x)) (append '((1002 . "{")) (apply 'append (mapcar 'LM:data->xdata x)) '((1002 . "}"))) )
( (list (cons 1000 (vl-prin1-to-string x))) )
)
)
(setq lstn (LM:data->xdata lst))
(setq lst (read (apply 'strcat (mapcar '(lambda ( x ) (cond ( (= x "{") "(" ) ( (= x "}") ")" ) ( t (cond ( (= 'str (type x)) (strcat "\"" x "\"") ) ( (= 'real (type x)) (strcat " " (rtos x) " ") ) ( (= 'int (type x)) (strcat " " (itoa x) " ") ) ( t (vl-prin1-to-string x) ) ) ))) (mapcar 'cdr lstn)))))
Not sure, but I think OP is searching to convert list of Xdata syntax to normal original list...