Oi, fiz alguma coisa aqui para vc.
A função transformar recebe um objeto escrito em JSON no seu formato original e retorna um novo objeto da forma que você quer.
Tanto os objetos de entrada e de saída são arrays.
<%--Document:indexCreatedon:Oct21,2011,7:37:09PMAuthor:David--%><%@pagecontentType="text/html"pageEncoding="UTF-8"%><!DOCTYPE html><html><head><metahttp-equiv="Content-Type"content="text/html; charset=UTF-8"><title>JSP Page</title><scripttype="text/javascript">functionload(){vardados=[{"atributoEstadoPk.atributo.codigo":1,"atributoEstadoPk.estado.codigo":"1"},{"atributoEstadoPk.atributo.codigo":2,"atributoEstadoPk.estado.codigo":"4"}];varobjeto=transformar(dados);alert(objeto[0].atributoEstadoPk.atributo.codigo);alert(objeto[1].atributoEstadoPk.estado.codigo);alert(objeto[2].atributoEstadoPk.atributo.codigo);alert(objeto[3].atributoEstadoPk.estado.codigo);}functiontransformar(dados){vartransferencia="[";varprocessa=function(dados){for(varxindados){if(dados[x]instanceofObject){processa(dados[x]);}elseif(typeofx=="string"){varchaves=x.split(".");varvalor=dados[x];varnovoObjeto="";for(vari=0;i<chaves.length;i++){novoObjeto+='{"'+chaves[i]+'":'}if(typeofvalor=="string"){novoObjeto+='"'+valor+'"';}else{novoObjeto+=valor;}for(;i>0;i--){novoObjeto+="}";}transferencia+=novoObjeto+",";}}}processa(dados);// remove a última vírgulatransferencia=transferencia.substring(0,transferencia.length-1);transferencia+="]";returneval(transferencia);}</script></head><bodyonload="load()"></body></html>