Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

FabianoSouza

Escrever individualmente string JSON em arquivo TXT

Recommended Posts

Objetivo: registrar uma informação num arquivo txt toda vez que o usuário acessar determinada página.

Como? Quero que a informação seja gravada em JSON.

 

A dificuldade:

Em situações em que precisa escrever um lote de dados em JSON é mais tranquilo porque todas as iterações ocorrem numa vez só.

Exemplo. Passar o resultado de um recordset. É só rodar o loop é pronto. Cria uma string e beleza.

 

Meu problema é que cada "iteração" ocorrerá quando o usuário acessar a página. Aí complica na hora de escrever o novo valor no arquivo txt porque já terá conteúdo lá.

 

 

Ilustrando.

Quando for o primeiro acesso à página será escrito isso no txt.

[{"cds":"05/10/2015 09:12:31"}]

Até aqui sem problema.

 

 

No segundo acesso será escrita nova informação no mesmo formato. O resultado será

[{"cds":"05/10/2015 09:12:31"}] [{"cds":"07/10/2015 10:25:31"}]

Então a coisa complica porque o resultado não será compatível com JSON.

Ainda que eu coloque uma vírgula para separar os arrays a coisa não funcionará.

 

Para ficar no formato certo a string deveria ser escrita assim

[[{"cds":"05/10/2015 09:12:31"}],[{"cds":"07/10/2015 10:25:31"}]]

Estou usando um FSO para cria o objeto que escreve no txt

Segue trecho...

trecho...
Set ObjMyFile = CreateObject("Scripting.FileSystemObject")
Set WriteMyData = ObjMyFile.OpenTextFile(LogFileDirectory & "\" & LogFileName,8,True)
RowHeaderString = RowHeaderString & "[{""cds"":" & """" & Now & """" & "},"
RowHeaderString = RowHeaderString & "{""cdu"":"  & """490""" & "},"
RowHeaderString = RowHeaderString & "{""cdi"":"  & """165656""" &"},"
RowHeaderString = RowHeaderString & "{""item"":" & """XPTO""" &"},"
RowHeaderString = RowHeaderString & "{""data"":" & """" & Now & """" & "}],"
WriteMyData.WriteLine(RowHeaderString)

Então peço ajuda aos colegas.

O que faço? Copio os dados antes, mesclo tudo e sobrescrevo o conteúdo?

Qual a saída?

Compartilhar este post


Link para o post
Compartilhar em outros sites

deste jeito o json fica legível ?

 

[{"cds":"05/10/2015 09:12:31"}],[{"cds":"07/10/2015 10:25:31"}]]

 

caso não consiga ler, vc poderia deixar tudo separado com vírgula num arquivo txt e quando for usar no formato json, dar um split no array com os dados e exportar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sua sugestão me trouxe uma luz.

Fiz uma lógica para saber se já existe valor no TXT.

Se o txt estiver vazio, escrever assim

{"cds":"07/10/2015 10:25:31"}

Se já existir valor gravado, eu faço assim

,{"cds":"07/10/2015 10:25:31"} (com vírgula à esquerda)

Aí tudo fica assim

{"cds":"05/10/2015 09:12:31"},{"cds":"07/10/2015 10:25:31"},{"cds":"07/10/2015 10:25:31"}

Depois, na hora de ler com JS faço um "ajuste" (pra não dizer gambiarra ) no script que lê a string.

Concateno colchetes (para criar array) com os valores das chaves (que são os objetos).

 

Fica assim

"[" + {"cds":"05/10/2015 09:12:31"},{"cds":"07/10/2015 10:25:31"},{"cds":"07/10/2015 10:25:31"} + "]"

Depois aplico o parser na nova string e pronto. Está funcionando.

 

Problema resolvido.

 

Mas agora me dei conta de outro problema: terei "regsitros" repetidos no txt. Pois o "insert" ocorre em cada acesso à página.

Preciso bolar uma lógica para impedir a duplicidade.

 

Se tiver sugestão manda aí.

 

Valew!

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza...

 

12122492_975259412517855_426004181028305

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.