Sería como sigue, revisa bien que si te abra los tag para determinar los elementos y ademas cerrar en su forma jerárquica.
Espero te sirva.
oScript = Createobject([Scripting.FileSystemObject])
oArchivo = oScript.CreateTextFile("JerarquiaComercial.txt")
oArchivo.Writeline("{")
oArchivo.Writeline('"JerarquiaComercial":[ ')
oArchivo.Writeline('{')
oArchivo.Writeline('"Lineas":[')
m.Acc='A'
l=0
GO top
DO WHILE !EOF()
SCATTER memvar
oArchivo.Writeline('{')
l=l+1
oArchivo.Writeline('"'+FIELD(2,'Lineas')+'":"'+ALLTRIM(m.codigoempresa)+'",')
oArchivo.Writeline('"'+FIELD(3,'Lineas')+'":"'+ALLTRIM(m.codigolinea)+'",')
oArchivo.Writeline('"'+FIELD(4,'Lineas')+'":"'+ALLTRIM(m.descripcionLinea)+'",')
*oArchivo.Writeline('"'+FIELD(5,'Lineas')+'":"'+ALLTRIM(m.descripcionLinea)+'",')
oArchivo.Writeline('"'+FIELD(5,'Lineas')+'":"'+ALLTRIM(m.descripcionAbreviada)+'",')
oArchivo.Writeline('"'+FIELD(8,'Lineas')+'":"'+ALLTRIM(m.tipoVisualizacion)+'",')
oArchivo.Writeline('"'+FIELD(7,'Lineas')+'":"'+ALLTRIM(m.orden)+'",')
*IF l<rLi
oArchivo.Writeline('"Accion'+'":"'+m.Acc+'",')
SELECT lineaIdioma
oArchivo.Writeline('"'+ALIAS()+'":[') &&abre arreglo de LineaIdioma
oArchivo.Writeline('{') &&abre registro de lineaIdioma
LOCATE FOR codigolinea=m.codigolinea
lI=0
DO WHILE !EOF() AND codigolinea=m.codigolinea
*SCATTER memvar
lI=lI+1
oArchivo.Writeline('"'+FIELD(4,'lineaIdioma')+'":"'+ALLTRIM(lineaIdioma.DescripcionLinea)+'",')
oArchivo.Writeline('"'+FIELD(5,'lineaIdioma')+'":"'+ALLTRIM(lineaIdioma.DescripcionAbreviada)+'",')
oArchivo.Writeline('"'+FIELD(2,'lineaIdioma')+'":"'+ALLTRIM(lineaIdioma.codigoIdioma)+'",')
SELECT idiomas
DO WHILE !EOF() AND codigoIdioma=lineaIdioma.codigoIdioma
oArchivo.Writeline('"'+FIELD(3,'idiomas')+'":"'+ALLTRIM(idiomas.descripcionIdioma)+'"')
skip
ENDDO
oArchivo.Writeline('}')
oArchivo.Writeline(']')
SELECT lineaIdioma
SKIP
ENDDO
*oArchivo.Writeline('}') &&cierra registro de LineaIdioma
*oArchivo.Writeline(']') &&cierra Registro LineaIdioma
SELECT Lineas
oArchivo.Writeline('},') &&cierra registro de LineaIdioma
SKIP
ENDDO
oArchivo.Writeline('}')
oArchivo.Writeline(']')
oArchivo.Writeline('}')
este lo tengo incompleto porque estaba en el y me detuve para avanzar otras cosas, pero te dá una idea.