[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Json in Gambas
[Thread Prev] | [Thread Next]
- Subject: Re: Json in Gambas
- From: System64 Development <64xcode@xxxxxxxxx>
- Date: Mon, 15 Apr 2024 14:02:02 +0200
- To: user@xxxxxxxxxxxxxxxxxxxxxx
El 15/4/24 a las 09:56, Rolf-Werner Eilert escribió:
A question to everyone who has worked with Json objects in Gambas...
I inherits the Jason class and also I add a cupple of methods, maybe its will be useful to you.
' Gambas class file Export '' Convert a collection key value pair to csv o tsv textStatic Public Function ExportCSV(v As Variant, Optional sep As String) As String
Dim s As String Dim vrt As Variant Dim sTag As String Dim sVal As String If sep = "" Then sep = "\t" Endif Select Object.Type(v) Case "Collection" For Each vrt In v If TypeOf(vrt) = gb.String Then sTag = Replace(v.Key, "\t", " ") sVal = Replace(vrt, "\t", " ") s &= sTag & sep & sVal & "\n" Endif Next End Select Return s End '' Encode in JSON format in a human readable way. Based on a Laurent tool. '' Correction of brakets error By Tercoide 2022-05-1 Static Public Function Encode2(vData As Variant) As String Dim sInput As String Dim sOutput As String Dim iStream As Stream Dim $sReadChar As String Dim $iTab As Integer Dim $bQuote, $bBracket As Boolean Dim $BracketLevel As Integer ' Nuevo sInput = JSON.Encode(vData) iStream = Open String sInput For Read While (Not Eof(iStream)) $sReadChar = Read #iStream, 1 If ($sReadChar = "{" And Not $bQuote) Then $iTab += 1 $sReadChar &= "\n" & Space$($iTab * 2) Else If ($sReadChar = "}" And Not $bQuote) Then $iTab -= 1 $sReadChar = "\n" & Space$($iTab * 2) & $sReadChar Else If ($sReadChar = "\"") Then $bQuote = Not $bQuote Else If ($sReadChar = "[") Then Inc $BracketLevel $bBracket = True Else If ($sReadChar = "]") Then $bBracket = False Dec $BracketLevel Else If ($sReadChar = ":" And Not $bQuote) Then $sReadChar &= " " Else If ($sReadChar = "," And Not $bQuote) ThenIf $BracketLevel > 1 Then ' solo agrego un salto de linea si no hay abierto nuevos brackets
$sReadChar &= " " Else $sReadChar &= "\n" & Space$($iTab * 2) End If Endif sOutput &= $sReadChar Wend Close iStream ' replace null with "" sOutput = Replace(sOutput, " null", " \"\"") Return sOutput End
Json in Gambas | Rolf-Werner Eilert <rwe-sse@xxxxxxxxxx> |