Spanish Ayuda para leer un archivo .json

desof

Well-Known Member
Licensed User
Longtime User
Hola amigo hoy comencé a manipular un archivo de este formato y se me esta haciendo un poco complicado adaptar a mi proyecto por que no lo comprendo del todo.
A ver si me ayudan estoy tratando de leer este contenido
B4X:
{
  "TITAN" : {
    "MAYO_17" : {
      "SORTEO1" : {
        "Bloquear" : "SI",
        "bola1" : 12,
        "bola2" : 24,
        "bola3" : 78,
        "bola4" : 4,
        "salidas" : 11,
        "ultima" : 15
      }
    }
  }
}

Estoy utilizando este codigo...

B4X:
Sub Activity_Create(FirstTime As Boolean)
    'parse the json file
    Dim JSON As JSONParser
    Dim Map1 As Map
    JSON.Initialize(File.ReadString(File.DirAssets, "titan.json"))
    Map1 = JSON.NextObject
    Dim m As Map 'helper map for navigating
    Dim MenuItems As List
    m = Map1.Get("TITAN")
    m = m.Get("MAYO_17")
    MenuItems = m.Get("SORTEO1")
   
    For i = 0 To MenuItems.Size - 1
        m = MenuItems.Get(i)
        Dim TMP As String        
        TMP="bola"&(I+1)
        Log(m.Get(TMP))
'        Log(m.Get("BOLA3"))
    Next
   
End Sub

y obtengo el error en esta linea For i = 0 To MenuItems.Size - 1

Este es el log del error

** Activity (main) Create, isFirst = true **
Error occurred on line: 33 (Main)
java.lang.ClassCastException: anywheresoftware.b4a.objects.collections.Map$MyMap cannot be cast to java.util.List
at anywheresoftware.b4a.objects.collections.List.getSize(List.java:129)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:710)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:339)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:249)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:139)
at anywheresoftware.b4a.samples.json.main.afterFirstLayout(main.java:102)
at anywheresoftware.b4a.samples.json.main.access$000(main.java:17)
at anywheresoftware.b4a.samples.json.main$WaitForLayout.run(main.java:80)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
 

Descartex

Well-Known Member
Licensed User
Longtime User
Hola amigo hoy comencé a manipular un archivo de este formato y se me esta haciendo un poco complicado adaptar a mi proyecto por que no lo comprendo del todo.
A ver si me ayudan estoy tratando de leer este contenido
Creo q el error lo tienes en el tipo de "contenedor" del parseador.
Con esto debería funcionar.
B4X:
Dim Elements As List
JSON.Initialize("["&File.ReadString(File.DirAssets, "titan.json")&"]")
Elements = JSON.NextArray

Ya me diras si da resultado.
Un saludo.
 
Top