B4R Question Check if a string is valid Json

peacemaker

Expert
Licensed User
Longtime User
Now i guess, such sub maybe enough ?
B4X:
Sub isJSON (JSON() As Byte) As Boolean
    If bc.StartsWith(JSON, "{".GetBytes) = False Then
        Return False
    End If
    If bc.LastIndexOf(JSON, "}".GetBytes) = -1 Then
        Return False
    End If
    Return True
End Sub

What think ?
 
Upvote 0

tchart

Well-Known Member
Licensed User
Longtime User
Or this

 
Upvote 0

TILogistic

Expert
Licensed User
Longtime User
test;
B4X:
Public Sub IsValidJSON(sJson As String) As Boolean
    Try
        'Check format
        If sJson.Trim.Length = 0 Then Return False
        If sJson.Trim = Null Or sJson.Trim.ToLowerCase = "null" Then Return False
'        If sJson.Trim = "{}" Or sJson.Trim = "[]" Then Return False

        'Valid Format   
        Dim obj As Object
        If sJson.StartsWith("[") And sJson.EndsWith("]") Then obj = sJson.As(JSON).ToList
        If sJson.StartsWith("{") And sJson.EndsWith("}") Then obj = sJson.As(JSON).ToMap
        obj = obj.As(JSON).ToString
        Return True
    Catch
        Return False
    End Try
End Sub

B4X:
Public Sub testJson
    Dim sJson As String = $"[{"Monday": 2, "Thursday": 5, "Friday": 6, "Sunday": 1, "Wednesday": 4, "Tuesday": 3, "Saturday": 7 }"$
    Log(IsValidJSON(sJson))
    Dim sJson As String = $"[{"Monday": 2, "Thursday": 5, "Friday": 6, "Sunday": 1, "Wednesday": 4, "Tuesday": 3, "Saturday": 7 }]"$
    Log(IsValidJSON(sJson))
    Dim sJson As String = $"{"Monday": 2, "Thursday": 5, "Friday": 6, "Sunday": 1, "Wednesday": 4, "Tuesday": 3, "Saturday": 7 }"$
    Log(IsValidJSON(sJson))
    Dim sJson As String = $"{}"$
    Log(IsValidJSON(sJson))
    Dim sJson As String = $"[]"$
    Log(IsValidJSON(sJson))
    Dim sJson As String = $"[dsdsdsd:]"$
    Log(IsValidJSON(sJson))
    Dim sJson As String = $"{dsdsd}"$
    Log(IsValidJSON(sJson))
    Dim sJson As String = $""$
    Log(IsValidJSON(sJson))
    Dim sJson As String = Null
    Log(IsValidJSON(sJson))
    Dim sJson As String = $"null"$
    Log(IsValidJSON(sJson))
End Sub
 
Upvote 0
Top